删除冗余,样式调整

dev
yujialong 3 years ago
parent 4ccf138b54
commit 0007563f79
  1. 2
      src/components/quill/index.vue
  2. 4
      src/views/Login.vue
  3. 2
      src/views/course/AddCurriculum.vue
  4. 4
      src/views/course/AddLink.vue
  5. 758
      src/views/course/assetConfig.vue
  6. 38
      src/views/course/courseconfig.vue
  7. 2
      src/views/customer/AddCustomer.vue
  8. 4
      src/views/customer/customer.vue
  9. 4
      src/views/data/Framework.vue
  10. 6
      src/views/data/Introduce.vue
  11. 6
      src/views/data/Product.vue
  12. 5
      src/views/order/Order.vue
  13. 2
      src/views/order/selectClient.vue
  14. 2
      src/views/serve/AddConfigure.vue
  15. 4
      src/views/serve/projectAdd.vue
  16. 8
      src/views/serve/projectList.vue
  17. 12
      src/views/setting/Person.vue
  18. 53
      src/views/user/User.vue

@ -9,7 +9,7 @@
:on-success="editorUploadSuccess" :on-success="editorUploadSuccess"
style="display: none" style="display: none"
> >
<el-button class="editorUpload" size="small" type="primary">点击上传</el-button> <el-button class="editorUpload" type="primary">点击上传</el-button>
</el-upload> </el-upload>
</div> </div>
</template> </template>

@ -88,8 +88,8 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button size="small" @click="phoneVisible = false"> </el-button> <el-button @click="phoneVisible = false"> </el-button>
<el-button size="small" type="primary" @click="phoneSubmit"> </el-button> <el-button type="primary" @click="phoneSubmit"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
<v-footer class="footer" ref="footer"></v-footer> <v-footer class="footer" ref="footer"></v-footer>

@ -9,7 +9,7 @@
<span class="per_back">返回</span> <span class="per_back">返回</span>
<span class="per_school" v-text="form.cid ? '编辑课程' : '新建课程'"></span> <span class="per_school" v-text="form.cid ? '编辑课程' : '新建课程'"></span>
</div> </div>
<el-button type="primary" size="small" round class="mag" v-preventReClick <el-button type="primary" round class="mag" v-preventReClick
@click="saveAdd('form')">确定 @click="saveAdd('form')">确定
</el-button> </el-button>
</div> </div>

@ -10,7 +10,7 @@
<span class="per_school">添加环节</span> <span class="per_school">添加环节</span>
</div> </div>
<div> <div>
<el-button type="primary" size="small" round class="mag" @click="saveAdd('form')">确定 <el-button type="primary" round class="mag" @click="saveAdd('form')">确定
</el-button> </el-button>
</div> </div>
</div> </div>
@ -22,7 +22,7 @@
<p class="addhr_tag"></p> <p class="addhr_tag"></p>
<span>环节1.1</span> <span>环节1.1</span>
</div> </div>
<el-button type="primary" size="small" round class="mag" @click="addcourse()">添加环节</el-button> <el-button type="primary" round class="mag" @click="addcourse()">添加环节</el-button>
</div> </div>
<div> <div>

@ -1,758 +0,0 @@
//
<template>
<div>
<div class="page">
<div class="relative">
<div class="p-title">内容设置</div>
<div class="btns">
<template v-if="!sorting">
<el-button type="primary" size="small" round v-throttle @click="addChapter">添加章节</el-button>
<el-button type="primary" size="small" round v-throttle @click="sort">编辑顺序</el-button>
</template>
<template v-else>
<el-button type="primary" size="small" round v-throttle @click="cancelSort">取消</el-button>
<el-button type="primary" size="small" round v-throttle @click="saveSort">保存</el-button>
</template>
</div>
</div>
<div class="page-content">
<div class="m-b-20" v-for="(chapter,index) in chapters" :key="chapter.id">
<div class="flex j-between a-center m-b-10">
<div>{{ chapter.name }}</div>
<div>
<template v-if="!sorting">
<el-button class="action-btn" type="primary" size="small" round v-throttle
@click="editChapter(chapter)">修改章节名称
</el-button>
<el-button class="action-btn" type="primary" size="small" round v-throttle
@click="addSection(chapter.id)">添加小节
</el-button>
<el-button class="action-btn" type="primary" size="small" round v-throttle
@click="delChapter(chapter.id)">删除
</el-button>
</template>
<template v-else>
<i class="el-icon-top sort-icon" :class="{disabled: index == 0}"
style="margin-right: 5px" @click="sortChapter(chapter,'up',index == 0,index)"></i>
<i class="el-icon-bottom sort-icon" :class="{disabled: index == chapters.length-1}"
@click="sortChapter(chapter,'down',index == chapter.length-1,index)"></i>
</template>
</div>
</div>
<el-table :data="chapter.subsectionList" class="table" stripe header-align="center">
<el-table-column type="index" width="100" label="序号" align="center"></el-table-column>
<el-table-column prop="name" label="资源名称">
</el-table-column>
<el-table-column prop="fileType" label="资源类型" align="center">
<template slot-scope="scope">
{{ transferType(scope.row.fileType) }}
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="300">
<template slot-scope="scope">
<template v-if="!sorting">
<el-button type="text" @click="preview(scope.row)">查看</el-button>
<el-button type="text" @click="delSection(scope.row)">删除</el-button>
<el-button type="text" @click="editSectionName(scope.row,chapter.id)">修改小节名称
</el-button>
<el-button type="text" @click="switchFile(scope.row,chapter.id)">更换文件</el-button>
</template>
<template v-else>
<i class="el-icon-top sort-icon" :class="{disabled: scope.$index == 0}"
style="margin-right: 5px"
@click="sortSection(index,'up',scope.$index == 0,scope.$index)"></i>
<i class="el-icon-bottom sort-icon"
:class="{disabled: scope.$index == chapter.subsectionList.length-1}"
@click="sortSection(index,'down',scope.$index == chapter.subsectionList.length-1,scope.$index)"></i>
</template>
</template>
</el-table-column>
</el-table>
</div>
<el-dialog :title="chapterId ? '编辑章节' : '新增章节'" :visible.sync="chapterVisible" width="24%"
:close-on-click-modal="false">
<el-form>
<el-form-item>
<el-input placeholder="请输入章节名称,便于对小节归类" v-model="chapterName" maxlength="50"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="chapterVisible = false">取消</el-button>
<el-button size="small" type="primary" @click="chapterSubmit">确定</el-button>
</span>
</el-dialog>
<el-dialog title="添加小节" :visible.sync="sectionVisible" width="24%" @close="closeSection"
:close-on-click-modal="false">
<el-form label-width="80px">
<el-form-item label="资源添加">
<el-upload
:before-upload="beforeUpload"
:on-remove="handleRemove"
:on-error="uploadError"
:on-success="uploadSuccess"
:before-remove="beforeRemove"
:limit="1"
:on-exceed="handleExceed"
:action="this.api.fileupload"
:file-list="uploadList"
name="file"
>
<el-button size="small"> 上传资源</el-button>
<!-- <img src="../assets/img/upload.png" alt=""> -->
</el-upload>
</el-form-item>
<el-form-item label="小节名称">
<el-input placeholder="请输入小节名称" v-model="sectionName" maxlength="50"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="sectionVisible = false">取消</el-button>
<el-button size="small" type="primary" @click="sectionSubmit">确定</el-button>
</span>
</el-dialog>
<el-dialog title="更换文件" :visible.sync="switchVisible" width="28%" :close-on-click-modal="false"
@close="closeSwitch">
<div style="text-align: center">
<el-upload
:before-upload="beforeUpload"
:on-remove="handleRemove"
:on-error="uploadError"
:on-success="uploadSuccess"
:before-remove="beforeRemove"
:limit="1"
:on-exceed="handleExceed"
:action="this.api.fileupload"
:file-list="uploadList"
name="file"
>
<el-button size="small"> 上传资源</el-button>
<!-- <img src="../assets/img/upload.png" alt=""> -->
</el-upload>
</div>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="switchVisible = false">取消</el-button>
<el-button size="small" type="primary" @click="switchSubmit">确定</el-button>
</span>
</el-dialog>
<el-dialog title="修改小节名称" :visible.sync="sectionNameVisible" width="24%" :close-on-click-modal="false">
<el-form>
<el-form-item>
<el-input placeholder="请输入小节名称" v-model="sectionName" maxlength="50"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="sectionNameVisible = false">取消</el-button>
<el-button size="small" type="primary" @click="sectionNameSubmit">确定</el-button>
</span>
</el-dialog>
<div v-show="previewImg" class="el-image-viewer__wrapper" :class="{active: previewImg}"
style="z-index: 2000">
<div class="el-image-viewer__mask"></div>
<span class="el-image-viewer__btn el-image-viewer__close" @click="previewImg = ''"><i
class="el-icon-circle-close" style="color: #fff"></i></span>
<div class="el-image-viewer__canvas">
<img :src="previewImg" class="el-image-viewer__img"
style="transform: scale(1) rotate(0deg);margin-top: -1px; max-height: 100%; max-width: 100%;">
</div>
</div>
<div v-show="iframeSrc" class="el-image-viewer__wrapper" :class="{active: iframeSrc}"
style="z-index: 2000">
<div class="el-image-viewer__mask"></div>
<span class="el-image-viewer__btn el-image-viewer__close" :class="{'doc-close': isWord}"
:style="{top: isWord ? '50px' : '5px'}" @click="closeIframe"><i class="el-icon-circle-close"
style="color: #fff"></i></span>
<div class="el-image-viewer__canvas">
<iframe v-if="iframeSrc" class="fileIframe" id="fileIframe" :src="iframeSrc"
frameborder="0"></iframe>
<template v-if="showMask">
<div class="mask" style="width: 200px;height: 30px;top: 53px;right: 320px"></div>
<div class="mask" style="width: 175px;height: 30px;top: 53px;right: 5px"></div>
</template>
<template v-if="showMask1">
<div class="word-mask1" style="width: 200px;height: 50px;"></div>
<div class="word-mask" style="height: 40px;top: 48px;"></div>
<div class="word-mask2"
style="top: 55px;left: 28%;width: 44%;height: calc(100% - 80px);"></div>
</template>
<template v-if="showMask2 && iframeSrc">
<div class="excel-mask1" style="height: 48px;"></div>
</template>
</div>
</div>
<div v-show="playAuth" class="el-image-viewer__wrapper" :class="{active: playAuth}"
style="z-index: 2000">
<div class="el-image-viewer__mask"></div>
<span class="el-image-viewer__btn el-image-viewer__close" @click="closePlayer"><i
class="el-icon-circle-close" style="color: #fff"></i></span>
<div class="player" id="player"></div>
</div>
<!-- <pdf :visible.sync="pdfVisible" :src.sync="pdfSrc"></pdf> -->
</div>
</div>
</div>
</template>
<script>
import { Loading } from "element-ui";
// import pdf from '../../components/pdf.vue'
// import breadcrumb from '@/components/breadcrumb'
export default {
data() {
return {
id: "",
userId: this.$store.state.userLoginId,
chapters: [],
sorting: false,
uploading: false,
uploadList: [],
chapterVisible: false,
chapterId: "",
chapterName: "",
sectionVisible: false,
sectionName: "",
sectionId: "",
switchVisible: false,
sectionNameVisible: false,
fileId: "",
fileName: "",
fileUrl: "",
originalFileName: "",
fileType: "",
playAuth: "",
player: null,
previewImg: "",
iframeSrc: "",
curFile: {},
isAddSection: false,
isWord: false,
isPPT: false,
isExcel: false,
showMask: false,
showMask1: false,
showMask2: false,
loadIns: null,
pdfVisible: false,
pdfSrc: "",
previewing: false
};
},
components: {
// pdf,
// breadcrumb
},
mounted() {
this.insertScript();
this.id = this.$route.query.id;
this.id && this.getData();
if (window.history && window.history.pushState) {
history.pushState(null, null, document.URL);
window.addEventListener("popstate", this.goBack, false);
}
},
destroyed() {
window.removeEventListener("popstate", this.goBack, false);
},
methods: {
getData() {
this.$get(`${this.api.queryChaptersAndSubsections}/${this.id}`)
.then(res => {
this.chapters = res.chapterList;
})
.catch(err => {
});
},
goBack() {
if (this.previewing) {
this.closeIframe();
} else {
history.back();
}
},
iframeOnload() {
document.querySelector("#fileIframe").onload = e => {
if (this.isPPT) {
this.showMask = true;
} else {
this.showMask = false;
}
if (this.isWord) {
this.showMask1 = true;
} else {
this.showMask1 = false;
}
if (this.isExcel) {
this.showMask2 = true;
} else {
this.showMask2 = false;
}
this.loadIns.close();
};
},
insertScript() {
const linkTag = document.createElement("link");
linkTag.rel = "stylesheet";
linkTag.href = "https://g.alicdn.com/de/prismplayer/2.8.2/skins/default/aliplayer-min.css";
document.body.appendChild(linkTag);
const scriptTag = document.createElement("script");
scriptTag.type = "text/javascript";
scriptTag.src = "https://g.alicdn.com/de/prismplayer/2.8.2/aliplayer-min.js";
document.body.appendChild(scriptTag);
},
//
beforeUpload(file) {
let type = this.transferType(file.name.substring(file.name.lastIndexOf(".") + 1));
if (type != "视频" && type != "图片" && type != "pdf" && (file.size / 1024 / 1024) > 10) {
this.errorMsg("请上传10M以内的文件");
return false;
}
this.uploading = true;
this.originalFileName = file.name;
if (this.isAddSection) this.sectionName = file.name.substring(0, file.name.lastIndexOf("."));
this.fileType = file.name.substring(file.name.lastIndexOf(".") + 1);
},
handleExceed(files, fileList) {
this.warningMsg(
`当前限制选择 1 个文件,如需更换,请删除上一个文件再重新选择!`
);
},
uploadSuccess(res, file, fileList) {
let { fileId, fileType, fileUrl, ossFileName } = res.data.filesResult;
this.uploading = false;
this.fileId = fileId;
this.fileType = fileType;
this.fileUrl = fileUrl;
this.fileName = ossFileName;
},
uploadError(err, file, fileList) {
this.$message({
message: "上传出错,请重试!",
type: "error",
center: true
});
},
beforeRemove(file, fileList) {
if ((file.size / 1024 / 1024) < 10) {
return this.$confirm(`确定移除 ${file.name}`);
}
},
handleRemove(file, fileList) {
this.uploadList = fileList;
},
uploadSure() {
this.importVisible = false;
this.pageNo = 1;
this.staffGradeId = "";
this.keyword = "";
this.getTeacher();
},
goback() {
this.$router.push("course");
},
transferType(ext) {
if ("jpg,jpeg,png,gif,svg,psd".includes(ext)) return "图片";
if ("mp4,3gp,mov,m4v,avi,dat,mkv,flv,vob,rmvb,rm,qlv".includes(ext)) return "视频";
return ext;
},
addChapter() {
this.chapterName = "";
this.chapterId = "";
this.chapterVisible = true;
},
sort() {
this.sorting = true;
},
cancelSort() {
this.sorting = false;
},
saveSort() {
this.chapters.forEach((n, k) => {
n.sort = k + 1;
n.subsectionList.forEach((j, i) => {
j.sort = i + 1;
});
});
let data = {
chapterVOList: this.chapters
};
this.$post(this.api.reorder, data).then(res => {
this.sorting = false;
this.getData();
}).catch(res => {
});
},
editChapter(item) {
this.chapterId = item.id;
this.chapterName = item.name;
this.chapterVisible = true;
},
delChapter(id) {
this.$confirm("此删除操作不可逆,是否确认删除选中项?", "提示", {
type: "warning"
})
.then(() => {
this.$del(`${this.api.deleteChapter}/${id}`).then(res => {
this.successMsg("删除成功");
this.getData();
}).catch(res => {
});
})
.catch(() => {
});
},
closeSection() {
this.isAddSection = false;
},
addSection(id) {
this.chapterId = id;
this.sectionName = "";
this.fileUrl = "";
this.uploadList = [];
this.sectionId = "";
this.isAddSection = true;
this.sectionVisible = true;
},
chapterSubmit() {
if (!this.chapterName) return this.warningMsg("请填写章节名称");
let data = {
courseId: this.id,
name: this.chapterName
};
if (this.chapterId) {
data.id = this.chapterId;
this.$put(this.api.editChapter, data).then(res => {
this.successMsg("修改成功");
this.chapterVisible = false;
this.getData();
})
.catch(err => {
});
} else {
this.$post(this.api.addChapter, data).then(res => {
this.successMsg("添加成功");
this.chapterVisible = false;
this.getData();
})
.catch(err => {
});
}
},
sectionSubmit() {
if (!this.sectionName) return this.warningMsg("请填写小节名称");
if (this.uploading) return this.warningMsg("资源正在上传中,请稍候");
if (!this.fileUrl && !this.fileId) return this.warningMsg("请上传资源");
let data = {
id: this.sectionId,
courseId: this.id,
chapterId: this.chapterId,
name: this.sectionName,
fileId: this.fileId,
fileUrl: this.fileUrl,
fileName: this.fileName,
fileType: this.fileType,
originalFileName: this.originalFileName
};
this.$post(this.api.addSubsection, data).then(res => {
this.successMsg("添加成功");
this.sectionVisible = false;
this.getData();
})
.catch(err => {
});
},
closeSwitch() {
this.fileId = "";
this.fileName = "";
this.fileType = "";
this.fileUrl = "";
this.sectionId = "";
},
preview(row) {
if (this.transferType(row.fileType) == "视频") {
this.$get(`${this.api.getPlayAuth}/${row.fileId}`).then(res => {
this.playAuth = res.data.playAuth;
if (this.player) {
this.player.replayByVidAndPlayAuth(row.fileId, this.playAuth);
} else {
this.player = new Aliplayer({
id: "player",
width: "100%",
autoplay: false,
vid: row.fileId,
playauth: this.playAuth,
encryptType: 1 //
});
}
}).catch(res => {
});
} else if (this.transferType(row.fileType) == "图片") {
this.previewImg = row.fileUrl;
} else if (row.fileType == "pdf") {
this.pdfSrc = row.fileUrl;
this.pdfVisible = true;
} else {
this.$get(`${this.api.getSubsection}/${row.id}`).then(res => {
this.previewing = true;
this.loadIns = Loading.service();
this.$route.fullPath.includes("#file") || history.pushState({ file: true }, "文件预览", "#" + this.$route.fullPath + "#file");
if (row.fileType == "pptx") {
this.isPPT = true;
this.isWord = false;
this.isExcel = false;
} else if (row.fileType == "doc" || row.fileType == "docx") {
this.isPPT = false;
this.isWord = true;
this.isExcel = false;
} else if (row.fileType == "xls" || row.fileType == "xlsx") {
this.isExcel = true;
this.isPPT = false;
this.isWord = false;
} else {
this.isPPT = false;
this.isWord = false;
this.isExcel = false;
}
this.iframeSrc = res.previewUrl;
this.$nextTick(() => {
this.iframeOnload();
});
})
.catch(err => {
});
}
},
editSectionName(row, chapterId) {
this.chapterId = chapterId;
this.sectionId = row.id;
this.sectionName = row.name;
this.sectionNameVisible = true;
},
switchFile(row, chapterId, sectionId) {
this.uploadList = [];
this.curFile = {
fileId: row.fileId,
fileName: row.fileName,
fileType: row.fileType,
fileUrl: row.fileUrl
};
this.chapterId = chapterId;
this.sectionId = row.id;
this.sectionName = row.sectionName;
this.switchVisible = true;
},
switchSubmitFile() {
let data = {
id: this.sectionId,
courseId: this.id,
chapterId: this.chapterId,
name: this.sectionName,
fileId: this.fileId,
fileName: this.fileName,
fileType: this.fileType,
fileUrl: this.fileUrl,
originalFileName: this.originalFileName
};
this.$put(this.api.editSubsection, data).then(res => {
this.successMsg("更换成功");
this.switchVisible = false;
this.getData();
})
.catch(err => {
});
},
switchSubmit() {
if (this.uploading) return this.warningMsg("资源正在上传中,请稍候");
if (!this.fileUrl && !this.fileId) return this.warningMsg("请上传资源");
if (this.transferType(this.curFile.fileType) == "视频") {
let data = {
videoIdList: [this.sectionId]
};
this.$del(`${this.api.removeVideo}/${this.curFile.fileId}`).then(res => {
this.switchSubmitFile();
}).catch(res => {
});
} else {
this.$del(`${this.api.fileDeletion}?keys=${this.curFile.fileName}`).then(res => {
this.switchSubmitFile();
}).catch(res => {
});
}
},
delSection(row) {
this.$confirm("此删除操作不可逆,是否确认删除选中项?", "提示", {
type: "warning"
})
.then(() => {
this.$del(`${this.api.deleteSubsection}/${row.id}`).then(res => {
this.successMsg("删除成功");
this.getData();
}).catch(res => {
});
})
.catch(() => {
});
},
sortChapter(row, type, disabled, index) {
if (!disabled) {
if (type == "up") {
let tempItem = this.chapters.splice(index - 1, 1)[0];
this.chapters.splice(index, 0, tempItem);
} else {
let tempItem = this.chapters.splice(index + 1, 1)[0];
this.chapters.splice(index, 0, tempItem);
}
}
},
sortSection(chapterIndex, type, disabled, index) {
if (!disabled) {
let list = this.chapters[chapterIndex].subsectionList;
if (type == "up") {
let tempItem = list.splice(index - 1, 1)[0];
list.splice(index, 0, tempItem);
} else {
let tempItem = list.splice(index + 1, 1)[0];
list.splice(index, 0, tempItem);
}
this.chapters[chapterIndex].subsectionList = list;
}
},
sectionNameSubmit() {
if (!this.sectionName) return this.warningMsg("请填写小节名称");
let data = {
id: this.sectionId,
courseId: this.id,
chapterId: this.chapterId,
name: this.sectionName
};
this.$put(this.api.editSubsection, data).then(res => {
this.successMsg("修改成功");
this.sectionNameVisible = false;
this.getData();
})
.catch(err => {
});
},
closePlayer() {
this.playAuth = "";
this.player.pause();
},
closeIframe() {
this.iframeSrc = "";
this.showMask = false;
this.showMask1 = false;
this.showMask2 = false;
this.previewing = false;
}
}
};
</script>
<style scoped lang="scss">
.btns {
position: absolute;
top: 12px;
right: 24px;
.el-button {
font-size: 14px;
}
}
.sort-icon {
font-size: 24px;
cursor: pointer;
&.disabled {
color: #ccc;
cursor: not-allowed
}
}
.el-image-viewer__wrapper {
transform: translateY(-10px);
transition: transform .5s;
&.active {
transform: translateY(0)
}
}
.el-image-viewer__close {
z-index: 10000;
top: 15px;
right: 15px;
&.doc-close {
i {
color: #000 !important;
}
}
}
.player {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 1200px !important;
height: 600px !important;
}
.fileIframe {
z-index: 1;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
width: 100%;
height: 100%;
}
.mask {
z-index: 1000;
position: fixed;
background-color: rgb(57, 58, 61);
}
.word-mask {
z-index: 1000;
position: fixed;
right: 0;
width: 100%;
background-color: rgb(243, 242, 241);
}
.word-mask1 {
z-index: 1000;
position: fixed;
top: 0;
right: 0;
background-color: #2b579a;
}
.word-mask2 {
z-index: 1000;
position: fixed;
background-color: transparent;
}
.excel-mask1 {
z-index: 9;
position: absolute;
top: 0;
left: 20%;
width: 80%;
background-color: #107c41;
}
</style>

@ -12,12 +12,12 @@
<div class="p-title">内容设置</div> <div class="p-title">内容设置</div>
<div class="btns"> <div class="btns">
<template v-if="!sorting"> <template v-if="!sorting">
<el-button type="primary" size="small" round @click="addChapter">添加章节</el-button> <el-button type="primary" round @click="addChapter">添加章节</el-button>
<el-button type="primary" size="small" round @click="sort">编辑顺序</el-button> <el-button type="primary" round @click="sort">编辑顺序</el-button>
</template> </template>
<template v-else> <template v-else>
<el-button type="primary" size="small" round @click="cancelSort">取消</el-button> <el-button type="primary" round @click="cancelSort">取消</el-button>
<el-button type="primary" size="small" round @click="saveSort">保存</el-button> <el-button type="primary" round @click="saveSort">保存</el-button>
</template> </template>
</div> </div>
</div> </div>
@ -28,9 +28,9 @@
<div>{{ chapter.name }}</div> <div>{{ chapter.name }}</div>
<div> <div>
<template v-if="!sorting"> <template v-if="!sorting">
<el-button class="action-btn" type="primary" size="small" round @click="editChapter(chapter)">修改章节名称</el-button> <el-button class="action-btn" plain @click="editChapter(chapter)">修改章节名称</el-button>
<el-button class="action-btn" type="primary" size="small" round @click="addSection(chapter.id)">添加小节</el-button> <el-button class="action-btn" plain @click="addSection(chapter.id)">添加小节</el-button>
<el-button class="action-btn" type="primary" size="small" round @click="delChapter(chapter.id)">删除</el-button> <el-button class="action-btn" plain @click="delChapter(chapter.id)">删除</el-button>
</template> </template>
<template v-else> <template v-else>
<i class="el-icon-top sort-icon" :class="{disabled: index == 0}" style="margin-right: 5px" @click="sortChapter(chapter,'up',index == 0,index)"></i> <i class="el-icon-top sort-icon" :class="{disabled: index == 0}" style="margin-right: 5px" @click="sortChapter(chapter,'up',index == 0,index)"></i>
@ -72,8 +72,8 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button size="small" @click="chapterVisible = false">取消</el-button> <el-button @click="chapterVisible = false">取消</el-button>
<el-button size="small" type="primary" @click="chapterSubmit">确定</el-button> <el-button type="primary" @click="chapterSubmit">确定</el-button>
</span> </span>
</el-dialog> </el-dialog>
@ -101,8 +101,8 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button size="small" @click="sectionVisible = false">取消</el-button> <el-button @click="sectionVisible = false">取消</el-button>
<el-button size="small" type="primary" @click="sectionSubmit">确定</el-button> <el-button type="primary" @click="sectionSubmit">确定</el-button>
</span> </span>
</el-dialog> </el-dialog>
@ -125,8 +125,8 @@
</el-upload> </el-upload>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button size="small" @click="switchVisible = false">取消</el-button> <el-button @click="switchVisible = false">取消</el-button>
<el-button size="small" type="primary" @click="switchSubmit">确定</el-button> <el-button type="primary" @click="switchSubmit">确定</el-button>
</span> </span>
</el-dialog> </el-dialog>
@ -137,8 +137,8 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button size="small" @click="sectionNameVisible = false">取消</el-button> <el-button @click="sectionNameVisible = false">取消</el-button>
<el-button size="small" type="primary" @click="sectionNameSubmit">确定</el-button> <el-button type="primary" @click="sectionNameSubmit">确定</el-button>
</span> </span>
</el-dialog> </el-dialog>
@ -640,6 +640,14 @@ export default {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.action-btn{
color: #9076FF;
font-size: 14px;
border: #9076FF 1px solid;
background-color: #fff;
border-radius: 4px;
}
.btns { .btns {
position: absolute; position: absolute;
top: 12px; top: 12px;

@ -9,7 +9,7 @@
<span class="per_back">返回</span> <span class="per_back">返回</span>
<span class="per_school" v-text="isDetail ? '查看客户信息' : (customerId ? '编辑客户信息' : '新增客户信息')"></span> <span class="per_school" v-text="isDetail ? '查看客户信息' : (customerId ? '编辑客户信息' : '新增客户信息')"></span>
</div> </div>
<el-button v-if="!isDetail" type="primary" size="small" round class="mag" v-preventReClick @click="saveAdd('form')">确定</el-button> <el-button v-if="!isDetail" type="primary" round class="mag" v-preventReClick @click="saveAdd('form')">确定</el-button>
</div> </div>
</el-card> </el-card>

@ -50,8 +50,8 @@
<span>客户列表</span> <span>客户列表</span>
</div> </div>
<div> <div>
<el-button type="primary" size="small" round class="mag" @click="addcustomer">新建</el-button> <el-button type="primary" round class="mag" @click="addcustomer">新建</el-button>
<el-button type="primary" size="small" round @click="delAllSelection">批量删除</el-button> <el-button type="primary" round @click="delAllSelection">批量删除</el-button>
</div> </div>
</div> </div>
<el-table v-loading="loading" :data="listData" class="table" stripe header-align="center" @selection-change="handleSelectionChange" row-key="customerId"> <el-table v-loading="loading" :data="listData" class="table" stripe header-align="center" @selection-change="handleSelectionChange" row-key="customerId">

@ -27,8 +27,8 @@
<el-input placeholder="请输入数据表名称" v-model="keyword" prefix-icon="el-icon-search" clearable></el-input> <el-input placeholder="请输入数据表名称" v-model="keyword" prefix-icon="el-icon-search" clearable></el-input>
</div> </div>
<div> <div>
<el-button type="primary" size="small" round @click="batchImport">导入数据</el-button> <el-button type="primary" round @click="batchImport">导入数据</el-button>
<el-button type="primary" size="small" round @click="delAllSelection">批量删除</el-button> <el-button type="primary" round @click="delAllSelection">批量删除</el-button>
</div> </div>
</el-form> </el-form>
<el-table :data="listData" class="table" ref="table" stripe header-align="center" @selection-change="handleSelectionChange"> <el-table :data="listData" class="table" ref="table" stripe header-align="center" @selection-change="handleSelectionChange">

@ -10,12 +10,12 @@
<el-card shadow="hover" class="mgb20 teacher_tab"> <el-card shadow="hover" class="mgb20 teacher_tab">
<div class="flex-between" style="margin-bottom: 10px;"> <div class="flex-between" style="margin-bottom: 10px;">
<p>数据简介</p> <p>数据简介</p>
<el-button v-if="introduceText && !editing" type="primary" size="small" @click="editing = !editing">编辑</el-button> <el-button v-if="introduceText && !editing" type="primary" @click="editing = !editing">编辑</el-button>
</div> </div>
<div class="intro" v-if="!introduceText && !editing"> <div class="intro" v-if="!introduceText && !editing">
<p class="text">请添加简介</p> <p class="text">请添加简介</p>
<div class="btn"> <div class="btn">
<el-button type="primary" size="small" @click="edit">添加</el-button> <el-button type="primary" @click="edit">添加</el-button>
</div> </div>
</div> </div>
<template v-if="introduceText || editing"> <template v-if="introduceText || editing">
@ -49,7 +49,7 @@
@keyup.enter.native="handleInputConfirm" @keyup.enter.native="handleInputConfirm"
> >
</el-input> </el-input>
<el-button v-else class="button-new-tag" size="small" @click="showInput">+</el-button> <el-button v-else class="button-new-tag" @click="showInput">+</el-button>
</div> </div>
</div> </div>
</el-card> </el-card>

@ -37,8 +37,8 @@
<span>产品列表</span> <span>产品列表</span>
</div> </div>
<div> <div>
<el-button type="primary" size="small" round @click="add">新增</el-button> <el-button type="primary" round @click="add">新增</el-button>
<el-button type="primary" size="small" round @click="delAllSelection">批量删除</el-button> <el-button type="primary" round @click="delAllSelection">批量删除</el-button>
</div> </div>
</div> </div>
<el-table :data="listData" class="table" ref="table" stripe header-align="center" @selection-change="handleSelectionChange" row-key="id"> <el-table :data="listData" class="table" ref="table" stripe header-align="center" @selection-change="handleSelectionChange" row-key="id">
@ -81,7 +81,7 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="已选数据"> <el-form-item label="已选数据">
<el-button type="primary" size="small" @click="configData">配置数据权限</el-button> <el-button type="primary" @click="configData">配置数据权限</el-button>
<div class="type-wrap" ref="typeWrap" @scroll="loadType"> <div class="type-wrap" ref="typeWrap" @scroll="loadType">
<el-tree ref="type" :data="typeList" show-checkbox accordion node-key="id" :default-expanded-keys="checkedIds" :default-checked-keys="checkedIds" :props="defaultProps" @node-expand="typeExpand"> <el-tree ref="type" :data="typeList" show-checkbox accordion node-key="id" :default-expanded-keys="checkedIds" :default-checked-keys="checkedIds" :props="defaultProps" @node-expand="typeExpand">
<span class="custom-tree-node" slot-scope="{ node, data }"> <span class="custom-tree-node" slot-scope="{ node, data }">

@ -66,9 +66,8 @@
<span>订单列表</span> <span>订单列表</span>
</div> </div>
<div> <div>
<el-button type="primary" size="small" round class="mag" @click="addOrder()">新建订单 <el-button type="primary" round class="mag" @click="addOrder()">新建订单</el-button>
</el-button> <el-button type="primary" round @click="delAllSelection">批量删除</el-button>
<el-button type="primary" size="small" round @click="delAllSelection">批量删除</el-button>
</div> </div>
</div> </div>
<el-table :data="orderData" class="table" stripe header-align="center" <el-table :data="orderData" class="table" stripe header-align="center"

@ -9,7 +9,7 @@
<span class="per_back">返回</span> <span class="per_back">返回</span>
<span class="per_school">选择客户</span> <span class="per_school">选择客户</span>
</div> </div>
<el-button type="primary" size="small" round class="mag" v-preventReClick @click="goback()">确定 <el-button type="primary" round class="mag" v-preventReClick @click="goback()">确定
</el-button> </el-button>
</div> </div>
</el-card> </el-card>

@ -10,7 +10,7 @@
<span class="per_school">系统服务器地址配置</span> <span class="per_school">系统服务器地址配置</span>
</div> </div>
<div> <div>
<el-button type="primary" size="small" round class="mag" v-preventReClick @click="saveAdd('form')">确定</el-button> <el-button type="primary" round class="mag" v-preventReClick @click="saveAdd('form')">确定</el-button>
</div> </div>
</div> </div>
</el-card> </el-card>

@ -6,9 +6,9 @@
<div class="flex-between"> <div class="flex-between">
<el-page-header @back="goBack" content="项目配置"></el-page-header> <el-page-header @back="goBack" content="项目配置"></el-page-header>
<div v-if="!isDetail"> <div v-if="!isDetail">
<el-button v-if="!projectId" type="success" size="small" @click="handleSubmit(0)">保存为草稿 <el-button v-if="!projectId" type="success" @click="handleSubmit(0)">保存为草稿
</el-button> </el-button>
<el-button type="primary" size="small" @click="handleSubmit(1)">确定并发布</el-button> <el-button type="primary" @click="handleSubmit(1)">确定并发布</el-button>
</div> </div>
</div> </div>
</el-card> </el-card>

@ -19,7 +19,7 @@
<el-form label-width="80px"> <el-form label-width="80px">
<el-col :span="6"> <el-col :span="6">
<el-form-item label="创建人"> <el-form-item label="创建人">
<el-select size="small" v-model="queryData.founder" clearable placeholder="请选择创建人" <el-select v-model="queryData.founder" clearable placeholder="请选择创建人"
@change="initData"> @change="initData">
<el-option v-for="(item,index) in founderList" :key="index" :label="item.label" <el-option v-for="(item,index) in founderList" :key="index" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
@ -28,7 +28,7 @@
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="状态"> <el-form-item label="状态">
<el-select size="small" v-model="queryData.state" clearable placeholder="请选择状态" @change="initData"> <el-select v-model="queryData.state" clearable placeholder="请选择状态" @change="initData">
<el-option v-for="(item,index) in stateList" :key="index" :label="item.label" <el-option v-for="(item,index) in stateList" :key="index" :label="item.label"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
@ -36,7 +36,7 @@
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="权限"> <el-form-item label="权限">
<el-select size="small" v-model="queryData.permissions" placeholder="请选择" @change="initData"> <el-select v-model="queryData.permissions" placeholder="请选择" @change="initData">
<el-option <el-option
v-for="item in permissionsList" v-for="item in permissionsList"
:key="item.value" :key="item.value"
@ -48,7 +48,7 @@
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item> <el-form-item>
<el-input size="small" placeholder="请输入项目名称" prefix-icon="el-icon-search" v-model="keyword" clearable></el-input> <el-input placeholder="请输入项目名称" prefix-icon="el-icon-search" v-model="keyword" clearable></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-form> </el-form>

@ -19,7 +19,7 @@
<div class="card" style="margin-top: -65px"> <div class="card" style="margin-top: -65px">
<p class="block-title" style="display: flex;justify-content: space-between;align-items: center;"> <p class="block-title" style="display: flex;justify-content: space-between;align-items: center;">
<span><img src="../../assets/img/person/user.png" alt=""> 用户信息</span> <span><img src="../../assets/img/person/user.png" alt=""> 用户信息</span>
<el-button type="primary" size="small" v-preventReClick @click="save">更新资料</el-button> <el-button type="primary" v-preventReClick @click="save">更新资料</el-button>
</p> </p>
<p class="meta-title"> <p class="meta-title">
<span>个人信息</span> <span>个人信息</span>
@ -145,16 +145,16 @@
<span>手机号</span> <span>手机号</span>
<div class="btns flex-between"> <div class="btns flex-between">
<span>{{form.phone}}</span> <span>{{form.phone}}</span>
<el-button v-if="form.phone" type="primary" size="small" @click="bindPhone">更换</el-button> <el-button v-if="form.phone" type="primary" @click="bindPhone">更换</el-button>
<el-button v-else type="primary" size="small" @click="bindPhone">绑定</el-button> <el-button v-else type="primary" @click="bindPhone">绑定</el-button>
</div> </div>
</div> </div>
<div class="item"> <div class="item">
<span>邮箱</span> <span>邮箱</span>
<div class="btns flex-between"> <div class="btns flex-between">
<span>{{form.email}}</span> <span>{{form.email}}</span>
<el-button v-if="form.email" type="primary" size="small" @click="bindEmail">更换</el-button> <el-button v-if="form.email" type="primary" @click="bindEmail">更换</el-button>
<el-button v-else type="primary" size="small" @click="bindEmail">绑定</el-button> <el-button v-else type="primary" @click="bindEmail">绑定</el-button>
</div> </div>
</div> </div>
</div> </div>
@ -299,7 +299,7 @@
<span>密码</span> <span>密码</span>
<div class="btns flex-between"> <div class="btns flex-between">
<p>******</p> <p>******</p>
<el-button type="primary" size="small" @click="bindPassword">更换</el-button> <el-button type="primary" @click="bindPassword">更换</el-button>
</div> </div>
</div> </div>
</div> </div>

@ -10,6 +10,31 @@
</div> </div>
<div> <div>
<el-form label-width="80px"> <el-form label-width="80px">
<el-row>
<el-col :span="8">
<el-form-item label="创建时间" class="userRadio">
<el-radio-group v-model="form.month">
<el-radio v-for="(item,index) in dateList" :key="index" :label="item.id" border>{{item.name}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="自定义">
<el-date-picker
v-model="form.date"
align="right"
unlink-panels
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
clearable
style="width: 100%"
></el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="4"> <el-col :span="4">
<el-form-item label="国家"> <el-form-item label="国家">
@ -54,31 +79,7 @@
</el-col> --> </el-col> -->
</el-row> </el-row>
<el-row>
<el-col :span="8">
<el-form-item label="创建时间" class="userRadio">
<el-radio-group v-model="form.month">
<el-radio v-for="(item,index) in dateList" :key="index" :label="item.id" border>{{item.name}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="自定义">
<el-date-picker
v-model="form.date"
align="right"
unlink-panels
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
clearable
style="width: 100%"
></el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
</div> </div>
</div> </div>
@ -93,7 +94,7 @@
<span>用户列表</span> <span>用户列表</span>
</div> </div>
<div> <div>
<el-button type="primary" size="small" round @click="delAllSelection">批量删除</el-button> <el-button type="primary" round @click="delAllSelection">批量删除</el-button>
</div> </div>
</div> </div>
<el-table :data="userData" class="table" stripe header-align="center" @selection-change="handleSelectionChange" row-key="userId"> <el-table :data="userData" class="table" stripe header-align="center" @selection-change="handleSelectionChange" row-key="userId">

Loading…
Cancel
Save