Эх сурвалжийг харах

Merge branch 'cxmo_branch'

cxmo 1 жил өмнө
parent
commit
e128694ecf

+ 9 - 2
src/router/modules/operateRutes.js

@@ -16,6 +16,13 @@ export default [{
         meta: {
             title: "PDF报告",
         },
-    },
-    ]
+    },{
+        path: "updateLogManage",
+        component: () => import("@/views/operation_manage/updatelog_manage/updateLogManage.vue"),
+        name: "updateLogManage",
+        hidden: false,
+        meta: {
+            title: "更新日志配置",
+        },
+    }]
 }];

+ 129 - 0
src/views/operation_manage/updatelog_manage/components/LogSetDialog.vue

@@ -0,0 +1,129 @@
+<script setup>
+import { ref, reactive, watch } from 'vue'
+import moment from 'moment'
+const props = defineProps({
+    isShow:Boolean,
+    logInfo:Object
+})
+const emit = defineEmits(["closeDia","saveLog"])
+
+let formData = reactive({
+    Version:'',
+    Content:'',
+    UpdateDate:''
+})
+watch(()=>props.logInfo,(newVal)=>{
+    if(newVal){
+        formData.Version = props.logInfo.Version||''
+        formData.Content = props.logInfo.Content||''
+        formData.UpdateDate = props.logInfo.UpdateDate||moment(new Date()).format('yyyy-MM-DD')
+    }else{
+        logFormRef.value?.resetFields()
+    }
+})
+const richEditorConfig = {
+    toolbarButtons:[
+        'textColor',
+        'bold',
+        'italic',
+        'underline',
+        'fontFamily',
+        'fontSize',
+        'align',
+        'outdent',
+        'indent',
+        'specialCharacters',
+        'insertHR',
+        'selectAll',
+        'clearFormatting',
+        'undo',
+        'redo',
+    ],
+    heightMax:220,
+    heightMin:219,
+    fontSizeDefaultSelection: "16",
+    quickInsertEnabled: false,
+    pasteAllowedStyleProps: ['font-family', 'font-size', 'color'],
+    language: "zh_cn",
+    placeholderText:'请输入更新内容',
+    wordPasteKeepFormatting:false,
+    pastePlain:true,
+    wordPasteModal:false,
+    pluginsEnabled:['colors'],//定义可用插件
+}
+const rules = reactive({
+    Version:[{ required: true, message: '请输入版本号', trigger: 'blur' }],
+    Content:[{ required: true, message: '请输入更新内容', trigger: 'blur' }],
+    UpdateDate:[{ required: true, message: '请选择更新日期', trigger: 'blur' }]
+})
+let logFormRef = ref(null)
+async function saveLog(){
+    formData.Content = formData.Content.replace(/<p data-f-id=\"pbf\".*?<\/p>/g, "")
+    try{
+        await logFormRef.value?.validate()
+    }catch(e){
+        console.log(e)
+    }
+    emit('saveLog',{...props.logInfo,...formData})
+}
+</script>
+
+<template>
+    <el-dialog
+        :model-value="props.isShow"
+        :close-on-click-modal="false"
+        :modal-append-to-body='false'
+        title="添加日志"
+        width="820px"
+        center
+        @close="emit('closeDia')"
+    >
+        <div class="log-set-wrap">
+            <el-form :model="formData" :rules="rules" inline label-width="100px" ref="logFormRef">
+                <el-form-item label="版本号" prop="Version">
+                    <el-input v-model="formData.Version" placeholder="请输入版本号" style="width:100%"></el-input>
+                </el-form-item>
+                <el-form-item label="更新内容" prop="Content" class="update-text">
+                    <div class="rich-editor-wrap">
+                        <froala :id="`log-editor`"
+                            :ref="`logEditor`" 
+                            :tag="'textarea'" 
+                            :config="richEditorConfig" 
+                            v-model:value="formData.Content">
+                        </froala>
+                    </div>
+                </el-form-item>
+                <el-form-item label="更新日期" prop="UpdateDate">
+                    <el-date-picker
+                        v-model="formData.UpdateDate"
+                        type="date"
+                        value-format="YYYY-MM-DD"
+                        placeholder="选择日期">
+                    </el-date-picker>
+                </el-form-item>
+            </el-form>
+        </div>
+        <template #footer>
+            <div class="btn-wrap" style="text-align: center;margin-bottom: 25px;">
+                <el-button type="primary" plain style="width:200px;" @click="emit('closeDia')">取消</el-button>
+                <el-button type="primary"  style="margin-left:50px;width:200px;" @click="saveLog">保存</el-button>
+            </div>
+        </template>
+    </el-dialog>
+</template>
+
+<style scoped lang="scss">
+.log-set-wrap{
+    .el-form{
+        .el-form-item.update-text{
+            display: flex;
+            .el-form-item__content{
+                flex:1;
+                .rich-editor-wrap{
+                    width:100%;
+                }
+            }
+        }
+    }
+}
+</style>

+ 153 - 0
src/views/operation_manage/updatelog_manage/updateLogManage.vue

@@ -0,0 +1,153 @@
+<script setup>
+import { ref, reactive } from 'vue'
+import { Search } from '@element-plus/icons-vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import {updateLogInterface} from '@/api/modules/updateLogApi';
+import LogSetDialog from './components/LogSetDialog.vue';
+
+let isLogSetShow = ref(false)
+
+let tableData = ref([])
+const tableColumns = [
+    {label: '更新内容',key: 'Content'},
+    {label: '版本号',key: 'Version'},
+    {label: '更新日期',key: 'UpdateDate',sort:true}
+]
+let tableParams = reactive({
+    searchText:'',
+    pageNo:1,
+    pageSize:10,
+    total:0,
+    sortType:0
+
+})
+function getTableData(){
+    updateLogInterface.getLogList({
+        Keyword:tableParams.searchText,
+        SortType:tableParams.sortType,
+        CurrentIndex:tableParams.pageNo,
+        PageSize:tableParams.pageSize
+    }).then(res=>{
+        if(res.Ret!==200) return 
+        tableData.value = res.Data.List||[]
+        tableParams.total = res.Data.Paging.Totals||0
+    })
+}
+
+getTableData()
+
+function sortChangeHandle(params){
+    tableParams.sortType = params.order === 'ascending' ? 1 :params.order === 'descending' ? 2 : 0
+    handleChangePage(1)
+}
+
+let logInfo = ref({})
+function handleEditLog(data){
+    logInfo.value = data
+    isLogSetShow.value = true
+}
+function handleDeleteLog(row){
+    ElMessageBox.confirm('删除操作不可恢复,确认删除吗?','提示',{
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+    }).then(() => {
+        updateLogInterface.deleteLogData({Id:row.Id}).then(res=>{
+            if(res.Ret!==200) return
+            ElMessage.success('删除成功')
+            getTableData()
+        })
+    }).catch(() => {});
+}
+
+function handleChangePage(page){
+    tableParams.pageNo = page
+    getTableData()
+}
+
+async function saveLog(form){
+    const res = form.Id
+                ?await updateLogInterface.editLogData(form)
+                :await updateLogInterface.addLogData(form)
+    if(res.Ret!==200) return 
+    ElMessage.success(`${form.Id?'编辑':'添加'}成功`)
+    handleChangePage(1)
+    isLogSetShow.value = false
+}
+
+</script>
+
+<template>
+    <div class="update-log-manage-wrap">
+        <div class="top-wrap">
+            <el-button type="primary" @click="handleEditLog({})">添加日志</el-button>
+            <el-input 
+                v-model="tableParams.searchText"
+                :prefix-icon="Search" 
+                @input="getTableData"
+                placeholder="输入更新内容检索" clearable></el-input>
+        </div>
+        <div class="table-wrap">
+            <el-table :data="tableData" 
+                @sort-change="sortChangeHandle" border>
+                <el-table-column 
+                    v-for="item in tableColumns" :key="item.key"
+                    :label="item.label" :sortable="item.sort" 
+                    align="center"
+                    >
+                    <template #default="{row}">
+                        <div v-if="item.key==='Content'" v-html="row[item.key]"></div>
+                        <span v-else>{{ row[item.key] }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="操作" align="center">
+                    <template #default="{row}">
+                        <el-link :underline="false" type="primary" style="margin-right: 20px;" @click="handleEditLog(row)">编辑</el-link>
+                        <el-link :underline="false" type="danger" @click="handleDeleteLog(row)">删除</el-link>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <el-pagination 
+                layout="prev,pager,next,total" 
+                background
+                :current-page="tableParams.pageNo"
+                @current-change="handleChangePage"
+                :page-size="tableParams.pageSize" 
+                :total="tableParams.total"
+                >
+            </el-pagination>
+        </div>
+    </div>
+    <LogSetDialog 
+        :isShow="isLogSetShow"
+        :logInfo="logInfo"
+        @saveLog="saveLog"
+        @closeDia="isLogSetShow = false"
+    />
+</template>
+
+<style scoped lang="scss">
+.update-log-manage-wrap{
+    padding:30px;
+    background-color: #fff;
+    border-radius: 4px;
+    .top-wrap{
+        display: flex;
+        justify-content: space-between;
+        .el-date-editor{
+            margin-left: auto;
+        }
+        .el-input{
+            margin-left:30px;
+            width:420px;
+        }
+    }
+    .table-wrap{
+        margin-top: 30px;
+        .el-pagination{
+            margin-top: 30px;
+            justify-content: flex-end;
+        }
+    }
+}
+</style>

+ 4 - 7
src/views/system_manage/depart_manage/departManage.vue

@@ -3,7 +3,6 @@ import { ref } from 'vue'
 import {useDepart} from './hooks/use-depart'
 import { departInterence } from '@/api/api.js'
 
-import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
 import { Search, InfoFilled } from '@element-plus/icons-vue'
 import { ElMessage } from 'element-plus'
 
@@ -212,12 +211,10 @@ getRoles()
                         </template>
                     </el-table-column>
                 </el-table>
-                <el-config-provider :locale="zhCn">
-                    <el-pagination background layout="total,prev,pager,next,jumper" :current-page="tableParams.pageNo"
-                        :page-size="tableParams.pageSize" :total="tableParams.total"
-                        @current-change="handleCurrentChange" style="margin-top: 60px; justify-content: flex-end;">
-                    </el-pagination>
-                </el-config-provider>
+                <el-pagination background layout="total,prev,pager,next,jumper" :current-page="tableParams.pageNo"
+                    :page-size="tableParams.pageSize" :total="tableParams.total"
+                    @current-change="handleCurrentChange" style="margin-top: 60px; justify-content: flex-end;">
+                </el-pagination>
                 <!-- 用户详情右侧弹窗 -->
                 <transition name="fade">
                     <UserDetail 

+ 4 - 7
src/views/system_manage/roleManage.vue

@@ -1,7 +1,6 @@
 <script setup>
     import { ref, reactive } from 'vue'
     import { useRouter} from "vue-router";
-    import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
     import { ElMessage,ElMessageBox } from 'element-plus'
     import { Search } from '@element-plus/icons-vue'
     import { departInterence } from '@/api/api.js'
@@ -162,12 +161,10 @@
                 </div>
             </el-table>
             <el-col :span="24" class="toolbar">
-                <el-config-provider :locale="zhCn">
-                    <el-pagination layout="total,prev,pager,next,jumper" background :current-page="tableParams.page_no"
-                        :page-size="tableParams.pageSize" :total="tableParams.total"
-                        @current-change="handleCurrentChange" style="float:right;">
-                    </el-pagination>
-                </el-config-provider>
+                <el-pagination layout="total,prev,pager,next,jumper" background :current-page="tableParams.page_no"
+                    :page-size="tableParams.pageSize" :total="tableParams.total"
+                    @current-change="handleCurrentChange" style="float:right;">
+                </el-pagination>
             </el-col>
         </div>
         <el-dialog