分支自 SuZhouGuanHong/TaiYuanTaiZhong

dengjunjie
2024-06-26 54ed2050bacec14a51ff96c6e0e2ec7033cd727a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import gridHeader from './App_News/App_NewGirdHeader'
 
import { h, resolveComponent } from 'vue';
let extension = {
    components: {//动态扩充组件或组件路径
        gridHeader: gridHeader,
        gridBody: {
            render() {
                return [
                    h(resolveComponent('el-alert'), {
                        style: { 'margin-bottom': '12px' },
                        'show-icon': true, type: 'warning',
                        closable: false, title: '发布静态页面、页面预览见:App_News.js'
                    }, ''),
                ]
            }
        },
        gridFooter: '',
        modelHeader: '',
        modelFooter: ''
    },
    text: "静态文件没有提交到github,本地重新生成下静态页面与设置封面即可预览",
    buttons: {
        view: [//ViewGrid查询界面扩展的按钮
        ]
    },
    methods: {
        initButton() {
            //当前用户是否有编辑或新建权限
            if (this.currentReadonly) { return; }
 
            this.buttons.splice(2, 0, {
                name: "设置封面", icon: 'el-icon-picture', value: 'Edit', type: 'primary',
                onClick: function () { this.setCover(); }
            })
            //添加弹出框生成静态页面的按钮
            this.boxButtons.splice(0, 0, ...[{
                name: "生成静态页面", icon: 'el-icon-tickets', type: 'primary',
                onClick: function () { this.publish(); }
            },
            {
                name: "预览页面", icon: 'el-icon-view', type: 'primary',
                onClick: function () {
                    if (!this.currentRow
                        || !this.currentRow.Content
                        || !this.currentRow.DetailUrl) {
                        return this.$Message.error("请先【保存】,再点击【生成静态页面】")
                    }
                    this.preview(this.currentRow);
                }
            }])
        },
        onInit() { //初始化预览与弹出框大小
            //设置表格内容超出换行
            this.textInline=false;
            //根据用户权限初始化按钮
            this.initButton();
            //设置保存成功后,不关闭弹出框
            this.boxOptions.saveClose = false;
            //设置查询表格只能单选
            this.single = true;
 
            //设置table表格DetailUrl字段点击预览静态页面
            this.editFormOptions.forEach(x => {
                x.forEach(item => {
                    this.columns.forEach(item => {
                        //设置url点击事件
                        if (item.field == 'DetailUrl') {
                            item.title = "页面预览";
                            item.formatter = (row) => { return '<a>预览</a>' }
                            item.click = (row, column, event) => {
                                this.preview(row);
                            }
                        }
                    })
                })
            })
        },
        onInited(){
            this.height = this.height - 50;
        },
        addBefore(formData) {//新建前验证
            return this.validContent(formData);
        },
        updateBefore(formData) { //修改前验证
            return this.validContent(formData);
        },
        validContent(formData) {
            if (!this.editFormFields.Content) {
                this.$Message.error("请编辑要发布的内容");
                return false;
            }
            return true;
        },
        preview(row) { //预览html页面
            if (!row.DetailUrl || row.DetailUrl.indexOf('.html') == -1 || !this.base.isUrl(this.http.ipAddress + row.DetailUrl)) {
                return this.$Message.error("请先发布静态页面")
            }
            window.open(this.http.ipAddress + row.DetailUrl + '?r=' + Math.random());
        },
        publish() { //生成静态页面
            if (!this.currentRow || !this.currentRow[this.table.key]) {
                return this.$Message.error("请先保存数据")
            }
            if (!this.currentRow.Content) {
                return this.$Message.error("请编辑要发布的内容")
            }
            this.http.post("api/news/createPage", this.currentRow).then(x => {
                if (x.status) {
                    // this.editFormFields.DetailUrl = x.data.url;
                    this.currentRow.DetailUrl = x.data.url;
                }
                this.refresh();
                return this.$Message.info(x.message)
            })
        },
        setCover() {  //设置封面图片
            let rows = this.getSelectRows();
            if (rows.length == 0) {
                return this.$Message.error("请选中要设置封面的行")
            }
            //设置封面图片,先获取当前已经图片fileInfo格式见volupdate组件参数说明
            let fileInfo = this.getFilePath(rows[0].ImageUrl) || [];
            this.$refs.gridHeader.open(fileInfo)
        },
        getFilePath(pathSring) {//拆分url并初始化图片到上传组件中
            //获取表的图片与文件显示
            if (!pathSring) return "";
            let fileInfo = [], filePath = pathSring.replace(/\\/g, "/").split(",");
            for (let index = 0; index < filePath.length; index++) {
                let file = filePath[index];
                if (file.indexOf(".") == -1) { continue; }
                let splitFile = file.split("/");
                if (splitFile.length == 0) { continue; }
                fileInfo.push({
                    name: splitFile[splitFile.length - 1],
                    path: this.base.isUrl(file) ? file : this.http.ipAddress + file
                });
            }
            return fileInfo;
        }
    }
};
export default extension;