Skip to content
publish.ts 13.7 KiB
Newer Older
wangqinghua's avatar
wangqinghua committed
import {Component} from '@angular/core';
import {ActionSheetController, IonicPage, LoadingController, NavController, NavParams} from 'ionic-angular';
wangqinghua's avatar
wangqinghua committed
import {CommonService} from "../../../provide/common.service";
wangqinghua's avatar
wangqinghua committed
import {TabsService} from "../../tabs/tabs.service";
import {Storage} from "@ionic/storage";
wangqinghua's avatar
wangqinghua committed
import {Camera, CameraOptions} from "@ionic-native/camera";
import {FileTransfer, FileTransferObject, FileUploadOptions} from "@ionic-native/file-transfer";
import {AppGlobal} from "../../../service/http.service";
wangqinghua's avatar
wangqinghua committed

@IonicPage()
@Component({
wangqinghua's avatar
wangqinghua committed
    selector: 'page-publish',
    templateUrl: 'publish.html',
wangqinghua's avatar
wangqinghua committed
})
export class PublishPage {

wangqinghua's avatar
wangqinghua committed
    //1党规党章,2系列讲话,3中央精神,4本市部署,5通知公告,6党建动态,7工作提示, 8党务参考,9廉政格言,10纪检提示,11风险排查,12警示教育,13支部活动,14党建联建,15结对帮扶
    plateList = [
wangqinghua's avatar
wangqinghua committed
        // {name: '党规党章', id: '1'},
        // {name: '系列讲话', id: '2'},
        // {name: '中央精神', id: '3'},
        // {name: '本市部署', id: '4'},
        // {name: '通知公告', id: '5'},
        // {name: '党建动态', id: '6'},
        // {name: '工作提示', id: '7'},
        // {name: '党务参考', id: '8'},
        // {name: '廉政格言', id: '9'},
        // {name: '纪检提示', id: '10'},
        // {name: '风险排查', id: '11'},
        // {name: '警示教育', id: '12'},
wangqinghua's avatar
wangqinghua committed
        {name: '支部活动', id: '13'},
        {name: '党建联建', id: '14'},
        {name: '学思践悟', id: '21'},
wangqinghua's avatar
wangqinghua committed
        // {name: '党建联建', id: '14'},
        // {name: '结对帮扶', id: '15'},
wangqinghua's avatar
wangqinghua committed
    ];
    obj = {
wangqinghua's avatar
wangqinghua committed
        type: '13',
wangqinghua's avatar
wangqinghua committed
        title: '',
        content: '',
wangqinghua's avatar
wangqinghua committed
        publishRangeFlag: '1',
wangqinghua's avatar
wangqinghua committed
    };
wangqinghua's avatar
wangqinghua committed
    fileList = [];   //文件数组
wangqinghua's avatar
wangqinghua committed
    group = [
        {groupName: '全体人员', id: 1},
        {groupName: '本处室', id: 2},
    ];  //用户组
wangqinghua's avatar
wangqinghua committed
    userid;  //当前登录人的id
    file;  // 文件
wangqinghua's avatar
wangqinghua committed
    orgName;  //登录人的部门
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    pictrue = AppGlobal.domain + '/wisdomgroup';

    type;   //视频文章or图片文章
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    caroul;  //轮播图
wangqinghua's avatar
wangqinghua committed
    role;  //权限级别
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    actionSheet_publish;
    actionSheet_image;
    actionSheet_video;



wangqinghua's avatar
wangqinghua committed
    constructor(public navCtrl: NavController, public navParams: NavParams, public storage: Storage,
                public camera: Camera, public actionSheetCtrl: ActionSheetController,
wangqinghua's avatar
wangqinghua committed
                public loadingCtrl: LoadingController, public transfer: FileTransfer,
wangqinghua's avatar
wangqinghua committed
                private tabsSer: TabsService,
wangqinghua's avatar
wangqinghua committed
                public commonSer: CommonService, public tabSer: TabsService) {
    }

    ionViewDidLoad() {
wangqinghua's avatar
wangqinghua committed
        this.type = this.navParams.get('type');
wangqinghua's avatar
wangqinghua committed
        this.getRole();
wangqinghua's avatar
wangqinghua committed
        this.getOrg();
wangqinghua's avatar
wangqinghua committed
        this.storage.get("userLoginInfo").then((value) => {
            this.userid = value.userid;
        })
    }

wangqinghua's avatar
wangqinghua committed
    ionViewWillLeave(){
        if(this.actionSheet_image !== undefined){
            this.actionSheet_image.dismiss();
        }
        if(this.actionSheet_video !== undefined){
            this.actionSheet_video.dismiss();
        }
        if(this.actionSheet_publish !== undefined){
            this.actionSheet_publish.dismiss();
        }
    }

wangqinghua's avatar
wangqinghua committed
    //获取部门
    getOrg() {
        this.tabSer.getUserIntegral().subscribe(
            (res) => {
                this.orgName = res.data.orgName;
            }
        );
    }

wangqinghua's avatar
wangqinghua committed
    //获取权限
    //返回值int :3-管理员,2-处室领导,1-内勤人员,0-普通用户
    getRole() {
        this.tabsSer.getRoles().subscribe(
            (res) => {
                this.role = res;
            }
        )
    }

wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    tackePic(resourceType) {
wangqinghua's avatar
wangqinghua committed
        this.actionSheet_image = this.actionSheetCtrl.create({
wangqinghua's avatar
wangqinghua committed
            cssClass: 'cameraAction',
wangqinghua's avatar
wangqinghua committed
            buttons: [
                {
                    text: '拍照',
                    role: 'fromCamera',
                    handler: () => {
                        console.log('fromCamera');
wangqinghua's avatar
wangqinghua committed
                        this.selectPicture(1, resourceType);
wangqinghua's avatar
wangqinghua committed
                    }
                }, {
                    text: '从相册中选',
                    role: 'fromPhoto',
                    handler: () => {
                        console.log('fromPhoto');
wangqinghua's avatar
wangqinghua committed
                        this.selectPicture(0, resourceType);
wangqinghua's avatar
wangqinghua committed
                    }
                }, {
                    text: '取消',
                    role: 'cancel',
                    handler: () => {
                        console.log('Cancel clicked');
                    }
                }
            ]
        });
wangqinghua's avatar
wangqinghua committed
        this.actionSheet_image.present();
wangqinghua's avatar
wangqinghua committed
    }

    //选择图片
wangqinghua's avatar
wangqinghua committed
    selectPicture(srcType, resourceType) {
        if (this.fileList.length > 8) {
            this.commonSer.toast('一批文章最多上传9个图片');
            return false;
        }
wangqinghua's avatar
wangqinghua committed
        const options: CameraOptions = {
wangqinghua's avatar
wangqinghua committed
            quality: 70,
wangqinghua's avatar
wangqinghua committed
            destinationType: this.camera.DestinationType.FILE_URI,
            encodingType: this.camera.EncodingType.PNG,
wangqinghua's avatar
wangqinghua committed
            mediaType: this.camera.MediaType.PICTURE,
            sourceType: srcType,
            saveToPhotoAlbum: false
        };
wangqinghua's avatar
wangqinghua committed
        const option: FileUploadOptions = {
            httpMethod: 'POST',
            headers: {
wangqinghua's avatar
wangqinghua committed
                'Accept': 'application/json',
wangqinghua's avatar
wangqinghua committed
            },
wangqinghua's avatar
wangqinghua committed
            fileName: 'image.png'
wangqinghua's avatar
wangqinghua committed
        };
wangqinghua's avatar
wangqinghua committed
        this.camera.getPicture(options).then((imagedata) => {
wangqinghua's avatar
wangqinghua committed
            let filePath = imagedata;
wangqinghua's avatar
wangqinghua committed
            if (filePath.indexOf('?') !== -1) {     //获取文件名
wangqinghua's avatar
wangqinghua committed
                filePath = filePath.split('?')[0];
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
            let arr = filePath.split('/');
wangqinghua's avatar
wangqinghua committed
            option.fileName = arr[arr.length - 1];
            this.upload(imagedata, option, resourceType);
wangqinghua's avatar
wangqinghua committed
        })
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed

    //选择视频
wangqinghua's avatar
wangqinghua committed
    selectVideo(resourceType) {
wangqinghua's avatar
wangqinghua committed
        if (this.fileList.length > 2) {
            this.commonSer.toast('一批文章最多上传3个视频');
            return false;
        }
wangqinghua's avatar
wangqinghua committed
        const options: CameraOptions = {
            quality: 30,
            destinationType: this.camera.DestinationType.FILE_URI,
            mediaType: this.camera.MediaType.VIDEO,
            sourceType: 0,
        };
wangqinghua's avatar
wangqinghua committed
        const option: FileUploadOptions = {
            httpMethod: 'POST',
            headers: {
                'Accept': 'application/json', //不加入 发生错误!!
            },
wangqinghua's avatar
wangqinghua committed
            fileName: 'video.mp4',
            mimeType: 'mp4'
wangqinghua's avatar
wangqinghua committed
        };
        this.camera.getPicture(options).then((videoData) => {
wangqinghua's avatar
wangqinghua committed
            let filePath = videoData;
wangqinghua's avatar
wangqinghua committed
            if (filePath.indexOf('?') !== -1) {     //获取文件名
wangqinghua's avatar
wangqinghua committed
                filePath = filePath.split('?')[0];
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
            let arr = filePath.split('/');
wangqinghua's avatar
wangqinghua committed
            option.fileName = arr[arr.length - 1];
            this.upload(videoData, option, resourceType);
wangqinghua's avatar
wangqinghua committed
        })

    }


    //上传文件或视频
    // 接口返回参数的格式
    // {
    //     "code" : 0,
    //     "data" : [ {
    //         "id" : null,
    //         "fileName" : null,
    //         "fileType" : "image/png",
    //         "showName" : "demo.png",
    //         "uploadTime" : 1557734823883,
    //         "filePath" : "/upload/image/F1F18A0762814B25A2DA98344C38058/demo.png"
    //     } ],
    //     "error" : [ ]
    // }
wangqinghua's avatar
wangqinghua committed
    upload(file, options, resourceType) {
wangqinghua's avatar
wangqinghua committed
        this.commonSer.log(file);
wangqinghua's avatar
wangqinghua committed
        const uploadLoading = this.loadingCtrl.create({
wangqinghua's avatar
wangqinghua committed
            content: '上传中...',
wangqinghua's avatar
wangqinghua committed
            dismissOnPageChange: true,
            enableBackdropDismiss: true,
wangqinghua's avatar
wangqinghua committed
        });
        uploadLoading.present();
        const fileTransfer: FileTransferObject = this.transfer.create();
wangqinghua's avatar
wangqinghua committed
        fileTransfer.upload(file, AppGlobal.domain + '/wisdomgroup/modules/common/file/upload1', options).then(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                uploadLoading.dismiss();
                this.commonSer.toast('上传成功');
                const data = JSON.parse(res.response);
wangqinghua's avatar
wangqinghua committed
                const obj = {
wangqinghua's avatar
wangqinghua committed
                    resourceType: resourceType,  //1  标题图片  2 轮播图 3  视频
wangqinghua's avatar
wangqinghua committed
                    path: data.data[0].filePath,
                    name: data.data[0].showName,
                };
wangqinghua's avatar
wangqinghua committed
                if (resourceType == 2) this.caroul = obj;
                if (resourceType != 2) this.fileList.push(obj);
wangqinghua's avatar
wangqinghua committed
                this.commonSer.log(data);
            }, err => {
wangqinghua's avatar
wangqinghua committed
                uploadLoading.dismiss();
                this.commonSer.toast('上传错误');
            });
wangqinghua's avatar
wangqinghua committed
        fileTransfer.onProgress((listener) => {
            let per = <any>(listener.loaded / listener.total) * 100;
            per = Math.round(per * Math.pow(10, 2)) / Math.pow(10, 2)
            uploadLoading.setContent('上传中...' + per + '%');
wangqinghua's avatar
wangqinghua committed
        })
wangqinghua's avatar
wangqinghua committed
    }

    //发布
wangqinghua's avatar
wangqinghua committed
    publish(status) {
        let message;
wangqinghua's avatar
wangqinghua committed
        let toast;
        if (status == 1) {
            message = '确定当前内容保存为草稿?';
            toast = "已保存为草稿";
        }
        if (status == 2) {
            message = '确定提交审核当前内容?';
            toast = "已提交审核";
        }
        if (status == 3) {
            message = '确定直接发布当前内容?';
            toast = "已发布";
        }
wangqinghua's avatar
wangqinghua committed
        if (!this.check()) {
wangqinghua's avatar
wangqinghua committed
            return false;
        }
wangqinghua's avatar
wangqinghua committed
        let attachmentsArr = [];   //附件
wangqinghua's avatar
wangqinghua committed
        let content = this.obj.content.replace(/\r?\n/g, "<br />");
wangqinghua's avatar
wangqinghua committed
        if (this.fileList.length > 0) {
            if (this.type == 'image') {
wangqinghua's avatar
wangqinghua committed
                attachmentsArr.push(this.fileList[0]); //将第一张图片作为标题图片,放在附件中 ,后面的图片 作为文章里面的图片
                let arr = this.fileList.slice(1);  //2.....
wangqinghua's avatar
wangqinghua committed
                arr.forEach(e => {
wangqinghua's avatar
wangqinghua committed
                    content += `<br><img src="/wisdomgroup/${e.path} " alt="图片">`;
wangqinghua's avatar
wangqinghua committed
            if (this.type == 'video') {
wangqinghua's avatar
wangqinghua committed
                attachmentsArr = this.fileList.filter(e => e.resourceType == 3);
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        if (this.caroul) attachmentsArr.push(this.caroul);  //轮播图放进附件
wangqinghua's avatar
wangqinghua committed
        const data = {
wangqinghua's avatar
wangqinghua committed
            title: this.obj.title,   //标题
            plateType: this.obj.type,  //分类
wangqinghua's avatar
wangqinghua committed
            source: this.orgName,   //来源
wangqinghua's avatar
wangqinghua committed
            publishStatus: status,  //已提交  退回1 发布3
wangqinghua's avatar
wangqinghua committed
            content: `&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` + content,  //内容
wangqinghua's avatar
wangqinghua committed
            publishRangeFlag: this.obj.publishRangeFlag,   //范围
wangqinghua's avatar
wangqinghua committed
            submitter: this.userid,  //提交者
wangqinghua's avatar
wangqinghua committed
            stuffType: this.type === 'image' ? 1 : 2,   //图片 1  视频 2
            attachments: attachmentsArr,   //标题附件
wangqinghua's avatar
wangqinghua committed
        };
wangqinghua's avatar
wangqinghua committed
        this.commonSer.alert(message, () => {
wangqinghua's avatar
wangqinghua committed
            this.tabSer.stuffSave(data).subscribe(
                (res) => {
wangqinghua's avatar
wangqinghua committed
                    this.commonSer.toast(toast);
wangqinghua's avatar
wangqinghua committed
                    setTimeout(() => {
                        this.navCtrl.pop()
                    }, 800)
                }
            )
        })
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    check() {
        if (!this.obj.title) {
wangqinghua's avatar
wangqinghua committed
            this.commonSer.toast('请输入文章标题!');
            return false;
        }
wangqinghua's avatar
wangqinghua committed
        if (!this.obj.content) {
wangqinghua's avatar
wangqinghua committed
            this.commonSer.toast('请输入发布内容!');
wangqinghua's avatar
wangqinghua committed
            return false;
wangqinghua's avatar
wangqinghua committed
        }
        return true;
    }

wangqinghua's avatar
wangqinghua committed
    //选择发布或者预览
wangqinghua's avatar
wangqinghua committed
    handle() {
wangqinghua's avatar
wangqinghua committed
        const preview = {
            text: '预览',
            role: 'preview',
            handler: () => {
                let content = this.obj.content;
                if (this.fileList.length > 0) {
                    if (this.type == 'image') {    //将第一张图片作为标题图片  ,后面的图片 作为文章里面的图片
                        let arr = this.fileList.slice(1);  //2.....
                        arr.forEach(e => {
                            content += `<br><img src="${this.pictrue}${e.path} " alt="图片">`;
wangqinghua's avatar
wangqinghua committed
                        });
                    }
                }
wangqinghua's avatar
wangqinghua committed
                if (this.type == 'video') {
                    this.fileList.forEach(e => {
                        e.resourceType = 3;
                    })
                }
                const obj = {
                    title: this.obj.title,
wangqinghua's avatar
wangqinghua committed
                    source: this.orgName,
wangqinghua's avatar
wangqinghua committed
                    publishTime: new Date().getTime(),
                    content: `&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` + content,
                    attachments: this.fileList,
                }
                this.navCtrl.push('PreviewPage', {
                    stuff: obj
                });
            }
        };
        const cancel = {
            text: '取消',
            role: 'cancel',
            handler: () => {
                console.log('Cancel clicked');
            }
        };
        const publish = {
            text: '直接发布',
            role: 'publish',
            handler: () => {
                this.publish(3);
            }
        };
        const submit = {
            text: '提交审核',
            role: 'submit',
            handler: () => {
                this.publish(2);
            }
        };
wangqinghua's avatar
wangqinghua committed
        const draft = {
            text: '保存草稿',
            role: 'draft',
            handler: () => {
                this.publish(1);
            }
        };
wangqinghua's avatar
wangqinghua committed
        let buttonArr = [];
        buttonArr.push(preview);
wangqinghua's avatar
wangqinghua committed
        if (this.role == 3 || this.role == 5) {
wangqinghua's avatar
wangqinghua committed
            buttonArr.push(publish);
        } else {
            buttonArr.push(submit);
        }
wangqinghua's avatar
wangqinghua committed
        buttonArr.push(draft);
wangqinghua's avatar
wangqinghua committed
        buttonArr.push(cancel);
wangqinghua's avatar
wangqinghua committed
        this.actionSheet_publish = this.actionSheetCtrl.create({
wangqinghua's avatar
wangqinghua committed
            title: '',
            cssClass: 'stuffAction',
            buttons: buttonArr
wangqinghua's avatar
wangqinghua committed
        });
wangqinghua's avatar
wangqinghua committed
        this.actionSheet_publish.present();
wangqinghua's avatar
wangqinghua committed
    }

    //删除文件
wangqinghua's avatar
wangqinghua committed
    deleteFile(i) {
        this.fileList.splice(i, 1);
wangqinghua's avatar
wangqinghua committed
    // 清空轮播
wangqinghua's avatar
wangqinghua committed
    deleteCarousel() {
wangqinghua's avatar
wangqinghua committed
        this.caroul = null;
    }
wangqinghua's avatar
wangqinghua committed
}