Browse Source

11.14

master
lichong 5 months ago
parent
commit
0c32574fe0
  1. 4
      front/src/renderer/src/assets/json/student.json
  2. 42
      front/src/renderer/src/components/tablecomponent.vue
  3. 61
      front/src/renderer/src/views/student.vue

4
front/src/renderer/src/assets/json/student.json

@ -493,7 +493,7 @@
"index": "33", "index": "33",
"tableShow": true, "tableShow": true,
"fixed": "right", "fixed": "right",
"setTableShow": true, "setTableShow": false,
"sort": "", "sort": "",
"formShow": false, "formShow": false,
"export": false "export": false
@ -505,7 +505,7 @@
"index": "34", "index": "34",
"tableShow": true, "tableShow": true,
"fixed": "right", "fixed": "right",
"setTableShow": true, "setTableShow": false,
"sort": "", "sort": "",
"isSearch": true, "isSearch": true,
"searchType": "select", "searchType": "select",

42
front/src/renderer/src/components/tablecomponent.vue

@ -5,26 +5,30 @@
@checkbox-change="selectChange" ref="tableRef" border :column-config="{ resizable: true }"> @checkbox-change="selectChange" ref="tableRef" border :column-config="{ resizable: true }">
<vxe-column type="seq" width="70" v-if="hiddenXuhao"></vxe-column> <vxe-column type="seq" width="70" v-if="hiddenXuhao"></vxe-column>
<vxe-column type="checkbox" width="70" fixed="left"></vxe-column> <vxe-column type="checkbox" width="70" fixed="left"></vxe-column>
<vxe-column :field="headerItem.prop" :title="headerItem.label" :min-width="`${headerItem.label.length * 23 + 24}`" <template v-for="(headerItem, headerIndex) in tableHeader" :key="headerIndex">
v-for="(headerItem, headerIndex) in tableHeader" :class-name="colorList[headerItem.label] || ''" <vxe-column :field="headerItem.prop" :title="headerItem.label" :width="`${headerItem.label.length * 23 + 24}`"
:header-class-name="colorList[headerItem.label] || ''" :key="headerIndex" :class-name="colorList[headerItem.label] || ''" :header-class-name="colorList[headerItem.label] || ''"
:fixed="!!headerItem.fixed ? 'left' : ''" :sortable="headerItem.isSort"> :fixed="!!headerItem.fixed ? 'left' : ''" :sortable="headerItem.isSort"
<template #default="{ row }"> v-if="['level', 'totalScore'].indexOf(headerItem.prop) === -1">
<template v-if="headerItem.type === 'text'"> <template #default="{ row }">
<span>{{ row[headerItem.prop] }}</span> <template v-if="headerItem.type === 'text'">
</template> <span>{{ row[headerItem.prop] }}</span>
<template v-else-if="headerItem.type === 'select'"> </template>
<span>{{ (_.find(headerItem.tableDisplay, { value: `${row[headerItem.prop]}` }) || {}).label }}</span> <template v-else-if="headerItem.type === 'select'">
</template> <span>{{ (_.find(headerItem.tableDisplay, { value: `${row[headerItem.prop]}` }) || {}).label }}</span>
<template v-else-if="headerItem.type === 'date'"> </template>
<span>{{ row[headerItem.prop] }}</span> <template v-else-if="headerItem.type === 'date'">
<span>{{ row[headerItem.prop] }}</span>
</template>
<template v-else-if="headerItem.type === 'number'">
<span>{{ row[headerItem.prop] }}</span>
</template>
<template v-else>{{ row[headerItem.prop] }}</template>
</template> </template>
<template v-else-if="headerItem.type === 'number'"> </vxe-column>
<span>{{ row[headerItem.prop] }}</span> </template>
</template> <vxe-column field="totalScore" title="总分" width="70" fixed="right"></vxe-column>
<template v-else>{{ row[headerItem.prop] }}</template> <vxe-column field="totalScore" title="等级" width="70" fixed="right"></vxe-column>
</template>
</vxe-column>
<vxe-column fixed="right" title="操作" width="145"> <vxe-column fixed="right" title="操作" width="145">
<template #default="{ row }"> <template #default="{ row }">
<el-button type="primary" circle @click="optClick(row, 'edit')"> <el-button type="primary" circle @click="optClick(row, 'edit')">

61
front/src/renderer/src/views/student.vue

@ -89,6 +89,12 @@
</el-icon> </el-icon>
<span>清空搜索</span> <span>清空搜索</span>
</el-button> </el-button>
<el-button type="primary" @click="clearLocalstory">
<el-icon>
<Refresh />
</el-icon>
<span>清空表头缓存</span>
</el-button>
<el-tooltip effect="dark" content="设置表头" placement="top"> <el-tooltip effect="dark" content="设置表头" placement="top">
<el-button type="primary" @click="setHeader"> <el-button type="primary" @click="setHeader">
<el-icon> <el-icon>
@ -97,12 +103,7 @@
<span>设置表头</span> <span>设置表头</span>
</el-button> </el-button>
</el-tooltip> </el-tooltip>
<!-- <el-button type="primary" @click="clearLocalstory">
<el-icon>
<Refresh />
</el-icon>
<span>清空缓存</span>
</el-button> -->
<!-- <div class="inputClass"> <!-- <div class="inputClass">
<el-input v-model.trim="searchParams.name" style="max-width: 600px" placeholder="请输入姓名" clearable <el-input v-model.trim="searchParams.name" style="max-width: 600px" placeholder="请输入姓名" clearable
@clear="searchData" @keyup.enter="searchData"> @clear="searchData" @keyup.enter="searchData">
@ -183,7 +184,7 @@
<div style="text-align: center;line-height: 60px;font-size: 1.2em"> <div style="text-align: center;line-height: 60px;font-size: 1.2em">
<span>守望者网络科技有限公司 Copyright@{{ dayjs().format("YYYY") }} 版权所有北京市房山区 资深教育工作者 李竞飞</span> <span>守望者网络科技有限公司 Copyright@{{ dayjs().format("YYYY") }} 版权所有北京市房山区 资深教育工作者 李竞飞</span>
</div> </div>
<el-dialog v-model="dialogFrom.visible" :title="dialogFrom.title" width="80%"> <el-dialog v-model="dialogFrom.visible" :title="dialogFrom.title" width="80%" :close-on-click-modal="false">
<formcomponent :formHeader="dialogFrom.formHeader" :formData="dialogFrom.formData" <formcomponent :formHeader="dialogFrom.formHeader" :formData="dialogFrom.formData"
:disabled="dialogFrom.disabled"> :disabled="dialogFrom.disabled">
</formcomponent> </formcomponent>
@ -706,35 +707,45 @@ export default {
// //
clearLocalstory() { clearLocalstory() {
// //
localStorage.clear() localStorage.removeItem("setTableHeader")
this.setHeaderFun()
ElMessage({ ElMessage({
type: 'success', type: 'success',
message: '清除缓存成功', message: '清除表头缓存成功',
}) })
}, },
}, setHeaderFun() {
async mounted() { this.setTableHeader = []
this.setTableHeader = [] if (!localStorage.getItem('setTableHeader')) {
if (!localStorage.getItem('setTableHeader')) { for (let i = 0; i < tableHeaderLocal.length; i++) {
for (let i = 0; i < tableHeaderLocal.length; i++) { let headerItem = tableHeaderLocal[i];
let headerItem = tableHeaderLocal[i]; if (headerItem.isSearch) {
if (headerItem.isSearch) { this.searchParams[headerItem.prop] = ""
this.searchParams[headerItem.prop] = "" }
} if (headerItem.setTableShow) {
if (headerItem.setTableShow) { this.setTableHeader.push({ ...headerItem, fixed: false })
this.setTableHeader.push(headerItem) }
} }
localStorage.setItem('setTableHeader', JSON.stringify(this.setTableHeader))
} else {
this.setTableHeader = JSON.parse(localStorage.getItem('setTableHeader'))
} }
localStorage.setItem('setTableHeader', JSON.stringify(this.setTableHeader))
} else {
this.setTableHeader = JSON.parse(localStorage.getItem('setTableHeader'))
} }
this.tableHeader = _.filter(this.setTableHeader, o => o.setTableShow) },
async mounted() {
this.setHeaderFun()
this.tableHeader = _.filter(tableHeaderLocal, o => o.tableShow)
this.formHeader = _.filter(tableHeaderLocal, o => o.formShow) this.formHeader = _.filter(tableHeaderLocal, o => o.formShow)
this.exportHeader = _.filter(tableHeaderLocal, o => o.export) this.exportHeader = _.filter(tableHeaderLocal, o => o.export)
await this.updateSeach({}, true) await this.updateSeach({}, true)
this.$watch("setTableHeader", (val) => { this.$watch("setTableHeader", (val) => {
this.tableHeader = _.filter(val, o => o.setTableShow) console.log(741, val);
// this.tableHeader = _.filter(val, o => o.setTableShow)
for (let i = 0; i < val.length; i++) {
let element = val[i];
let item = _.find(this.tableHeader, o => o.prop === element.prop)
item.fixed = element.fixed
}
localStorage.setItem('setTableHeader', JSON.stringify(val)) localStorage.setItem('setTableHeader', JSON.stringify(val))
}, { deep: true }) }, { deep: true })
}, },

Loading…
Cancel
Save