From f33d207466507fac40674d3fc9c967535cb4c931 Mon Sep 17 00:00:00 2001
From: lyfO_o <764716047@qq.com>
Date: 星期三, 27 四月 2022 17:25:56 +0800
Subject: [PATCH] app下载:v1

---
 src/views/layout/components/Navbar.vue   |   19 +-
 src/views/systemManage/appFile/index.vue |  469 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 479 insertions(+), 9 deletions(-)

diff --git a/src/views/layout/components/Navbar.vue b/src/views/layout/components/Navbar.vue
index 870bb71..2343d63 100644
--- a/src/views/layout/components/Navbar.vue
+++ b/src/views/layout/components/Navbar.vue
@@ -37,7 +37,7 @@
     <el-dialog :visible.sync="appDialogVisible"
                :modal-append-to-body="false" :close-on-click-modal="false"
                width="320px"
-    title="监管APP安卓版浏览器扫码下载">
+    title="APP安卓版浏览器扫码下载">
         <div id="appcode" style="height: 200px;width: 200px"/>
     </el-dialog>
   </div>
@@ -79,6 +79,7 @@
   },
   data() {
     return {
+      prefixUrl:process.env.IMG_API,
       warnBJList: [],
       warnBJVisible: false,
       pageSize: 10,
@@ -124,20 +125,20 @@
   methods: {
      getAppCode(){
          const roles = this.roles
-         for (let role in roles){
-             if(roles[role].name == '生产企业' ||
-                 roles[role].name == '销售企业'){
-                 this.appShow = false;
-             }
-         }
+         // for (let role in roles){
+         //     if(roles[role].name == '生产企业' ||
+         //         roles[role].name == '销售企业'){
+         //         this.appShow = false;
+         //     }
+         // }
          const _this = this
          const params = {}
-         params['filetype'] = "监管"
+         params['filetype'] = "众泰APP"
          newAppFile(params).then(response => {
              const res = response.data;
              if (res.code == 200) {
                  const result = res.result;
-                 _this.appCode = result.fileurl
+                 _this.appCode = this.prefixUrl + result.fileurl
              }
          }).catch(error => {
          })
diff --git a/src/views/systemManage/appFile/index.vue b/src/views/systemManage/appFile/index.vue
new file mode 100644
index 0000000..cf26ca0
--- /dev/null
+++ b/src/views/systemManage/appFile/index.vue
@@ -0,0 +1,469 @@
+<template>
+    <div class="app-container">
+        <div>
+            <el-select v-model="queryForm.filetype" clearable placeholder="请选择文件类型">
+                <el-option
+                    class="filter-item"
+                    @keyup.enter.native="queryHandle"
+                    v-for="item in fileType"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                </el-option>
+            </el-select>
+            <el-button v-if="getBtnPermission('add')" class="filter-item" style="margin-left: 10px;" type="primary"
+                       icon="el-icon-plus" @click="showCreateHandle">新增
+            </el-button>
+            <el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-refresh"
+                       @click="refreshHandle">刷新
+            </el-button>
+            <el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-search"
+                       @click="queryHandle"/>
+        </div>
+        <div class="table_content">
+            <el-table
+                v-loading="listLoading"
+                :key="tableKey"
+                :data="appFileData"
+                border
+                fit
+                highlight-current-row
+                style="width: 100%;"
+                @sort-change="sortChange"
+            >
+                <el-table-column type="index" label="序号" align="center" width="80"/>
+                <el-table-column label="文件类型" prop="filetype" align="center" sortable="custom">
+                    <template slot-scope="scope">
+                        <span>{{ scope.row.filetype }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="文件名称" prop="filename" align="center" sortable="custom">
+                    <template slot-scope="scope">
+                        <span>{{ scope.row.filename }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="文件链接" prop="fileurl" align="center" sortable="custom">
+                    <template slot-scope="scope">
+                <span style="color:blue;cursor:pointer"
+                      @click="downloadHandle(prefixUrl +scope.row.fileurl)"
+                >{{ prefixUrl + scope.row.fileurl }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="版本号" prop="version" align="center" sortable="custom">
+                    <template slot-scope="scope">
+                        <span>{{ scope.row.version }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="备注" prop="remark" align="center" sortable="custom">
+                    <template slot-scope="scope">
+                        <span>{{ scope.row.remark }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="创建时间" prop="created" align="center" sortable="custom">
+                    <template slot-scope="scope">
+                        <span>{{ scope.row.created | parseTime('{y}-{m}-{d}') }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="更新时间" prop="updated" align="center" sortable="custom">
+                    <template slot-scope="scope">
+                        <span>{{ scope.row.updated | parseTime('{y}-{m}-{d}') }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="操作" align="center" width="240" class-name="small-padding fixed-width">
+                    <template slot-scope="scope">
+                        <el-button v-if="getBtnPermission('edit')" type="text" @click="showEditHandle(scope.row)">编辑</el-button>
+                        <el-button v-if="getBtnPermission('delete')" type="text" style="color:red;" @click="deleteHandle(scope.row)">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <br>
+            <el-pagination
+                v-show="recordTotal>0"
+                :current-page="currentPage"
+                :page-sizes="[10, 20, 30, 50]"
+                :page-size="pageSize"
+                :total="recordTotal"
+                layout="total, sizes, prev, pager, next, jumper"
+                background
+                style="float:right;"
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+            />
+        </div>
+        <el-dialog :title="dialogStatus==='create'?'新增':'编辑'" :visible.sync="dialogFormVisible"
+                   :modal-append-to-body="false" :close-on-click-modal="false" width="600px">
+            <el-form ref="dataForm" :rules="dataFormRules" :model="dataForm" label-position="right" label-width="140px"
+                     style="margin-left:30px;width:550px;" element-loading-text="保存中...">
+                <el-row>
+                    <el-col :span="13">
+                        <el-form-item label="文件类型:" prop="filetype">
+                            <el-select v-model="dataForm.filetype" clearable placeholder="请选择文件类型">
+                                <el-option
+                                    class="filter-item"
+                                    @keyup.enter.native="queryHandle"
+                                    v-for="item in fileType"
+                                    :key="item.value"
+                                    :label="item.label"
+                                    :value="item.value">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="15">
+                        <el-form-item label="文件名称:" prop="filename">
+                            <el-input v-model.trim="dataForm.filename" />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-form-item label="上传文件:">
+                    <input id="importFileInput" ref="importFileInput" type="file" accept=""/>
+                </el-form-item>
+                <el-row>
+                    <el-col :span="12">
+                        <el-form-item label="版本号:" prop="version">
+                            <el-input v-model.trim="dataForm.version" type="number"/>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="20">
+                        <el-form-item label="备注:" prop="remark">
+                            <el-input v-model.trim="dataForm.remark" />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button @click="dialogFormVisible = false">取消</el-button>
+                <el-button type="primary" @click="dialogStatus==='create'?createHandle():updateHandle()">确认</el-button>
+            </div>
+        </el-dialog>
+        <div style="clear: both;"></div>
+    </div>
+</template>
+
+<script>
+    import Cookies from 'js-cookie'
+    import { checkBtnPermission} from "@/utils/permission";
+    import { appFileList, addAppFile, editAppFile, delAppFile } from "@/api/appfile";
+    import { parseError} from "@/utils/messageDialog";
+    import { computePageCount} from "@/utils";
+    import { mapGetters} from "vuex";
+    import { dictionaryAllItems } from '@/api/dictionary';
+    import { Message, MessageBox } from 'element-ui'
+
+    export default {
+        name: "appfile",
+        filters : {
+            parseGX(value){
+                let arr = value.split('-');
+                let guanxia='';
+                for (let i = 0; i < arr.length; i++){
+                    if (arr[i] == null || arr[i] == '' || arr[i] == 'null'){
+                    }else {
+                        if (i == 0){
+                            guanxia = arr[i];
+                        }else {
+                            guanxia += '-'+arr[i];
+                        }
+                    }
+                }
+                return guanxia;
+            }
+        },
+        data() {
+            return {
+                prefixUrl:process.env.IMG_API,
+                pageSize: 10,
+                recordTotal: 0,
+                currentPage: 1,
+                pageTotal: 0,
+                tableKey: 0,
+                appFileData: null,
+                listLoading: true,
+                dataForm: {
+                    id: '',
+                    filetype: '',
+                    filename:'',
+                    fileurl:'',
+                    version:'',
+                    remark:'',
+                    file:'',
+                },
+                queryForm: {
+                    filetype:'',
+                },
+                dialogFormVisible: false,
+                dialogStatus: '',
+                dataFormRules: {
+                    filetype: [{required: true, message: '文件类型不能为空', trigger: 'blur'}],
+                    version: [{required: true, message: '版本不能为空', trigger: 'blur'}],
+                },
+                fileType:[],
+                productVoList:[],
+                productVoDialogVisible:false,
+
+                productDialogFormVisible:false,
+                productData:[],
+                pageSizeProduct: 10,
+                currentPageProduct: 1,
+                recordTotalProduct: 0,
+                pageTotalProduct: 0,
+                queryProductForm: {
+                    name: '',
+                    manufacturer:'',
+                    directionCode:'',
+                    type:'',
+                },
+
+                manufacturer:'',
+                enterpriseList : [],
+                enterpriseDialogFormVisible:false,
+                pageSizeEnterpise: 10,
+                currentPageEnterpise: 1,
+                recordTotalEnterpise: 0,
+                pageTotalEnterpise: 0,
+            }
+        },
+        created() {
+            this.getAppFileListList();
+            this.getDictionaryStatusList();
+        },
+        computed: {
+            ...mapGetters([
+                'userType',
+                'username'
+            ])
+        },
+        methods: {
+            handleSizeChangeProduct: function (val) {
+                this.pageSizeProduct = val
+                this.currentPageProduct = 1
+                this.getProductList()
+            },
+            handleCurrentChangeProduct: function (val) {
+                this.currentPageProduct = val
+                this.getProductList()
+            },
+            getDictionaryStatusList(){
+                const _this = this
+                if (_this.fileType && _this.fileType.length > 0) {
+                    return
+                }
+                const params = {}
+                params['dictionaryType'] = 'APP版本'
+                dictionaryAllItems(params).then(response => {
+                    const res = response.data
+                    if (res.code == 200) {
+                        _this.fileType = res.result
+                    } else {
+                        parseError({ error: res.data.message, vm: _this })
+                    }
+                }).catch(error => {
+                    parseError({ error: error, vm: _this })
+                })
+            },
+            getAppFileListList() {
+                const _this = this
+                const params = {}
+                params['pageIndex'] = _this.currentPage
+                params['pageSize'] = _this.pageSize
+                params['sort'] = _this.sort
+                params['order'] = _this.order
+                for (const i in _this.queryForm) {
+                    if (_this.queryForm[i] != undefined && _this.queryForm[i].toString() != '') {
+                        params[i] = _this.queryForm[i]
+                    }
+                }
+                _this.listLoading = true
+                appFileList(params).then(response => {
+                    const res = response.data;
+                    if (res.code == 200) {
+                        const result = res.result;
+                        _this.recordTotal = result.totalCount;
+                        _this.pageSize = result.pageSize;
+                        _this.pageTotal = computePageCount(result.totalCount, result.pageSize);
+                        _this.currentPage = result.pageIndex;
+                        _this.appFileData = result.result
+                    } else {
+                        parseError({error: res.data.message, vm: _this})
+                    }
+                    _this.listLoading = false
+                }).catch(error => {
+                    _this.listLoading = false
+                    parseError({error: error, vm: _this})
+                })
+            },
+            createHandle: function () {
+                const _this = this
+                this.$refs['dataForm'].validate((valid) => {
+                    if (valid) {
+                        const formData = new FormData();
+                        const files = this.$refs["importFileInput"].files;
+                        if (files.length > 0){
+                            formData.append('file', files[0]);
+                        }else {
+                            parseError({ error: '请上传文件', vm: this })
+                            return
+                        }
+                        formData.append('filetype', _this.dataForm.filetype);
+                        formData.append('filename', _this.dataForm.filename);
+                        formData.append('version', _this.dataForm.version);
+                        formData.append('remark', _this.dataForm.remark);
+                        addAppFile(formData).then(response => {
+                            const res = response.data
+                            if (res.code == 200) {
+                                _this.dialogFormVisible = false
+                                _this.$message({
+                                    message: '创建成功',
+                                    type: 'success'
+                                });
+                                _this.getAppFileListList()
+                            } else {
+                                parseError({error: res.data.message, vm: _this})
+                            }
+                        }).catch(error => {
+                            parseError({error: error, vm: _this})
+                        })
+                    }
+                })
+            },
+            deleteHandle: function (row) {
+                const _this = this
+                MessageBox.confirm('确定删除信息', '确定删除', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    type: 'warning'
+                }).then(() => {
+                    _this.deleteAction(row)
+                }).catch(() => {
+                    console.log('已取消删除')
+                })
+            },
+            deleteAction: function (row) {
+                const _this = this;
+                const params = {}
+                params['id'] = row.id;
+                delAppFile(params).then(response => {
+                    const res = response.data
+                    if (res.code == 200) {
+                        _this.$message({
+                            message: '删除成功',
+                            type: 'success'
+                        })
+                        _this.getAppFileListList()
+                    } else {
+                        parseError({error: res.data.message, vm: _this})
+                    }
+                }).catch(error => {
+                    parseError({error: error, vm: _this})
+                })
+            },
+            refreshHandle: function () {
+                this.getAppFileListList()
+            },
+            queryHandle: function () {
+                this.currentPage = 1
+                this.getAppFileListList()
+            },
+            resetDataForm() {
+                this.dataForm = {
+                    id: '',
+                    filetype: '',
+                    filename:'',
+                    fileurl:'',
+                    version:'',
+                    remark:'',
+                }
+            },
+            showCreateHandle() {
+                this.resetDataForm()
+                this.dialogStatus = 'create'
+                this.dialogFormVisible = true
+                this.$nextTick(() => {
+                    this.$refs['dataForm'].clearValidate()
+                })
+            },
+            updateHandle() {
+                this.$refs['dataForm'].validate((valid) => {
+                    const _this = this
+                    if (valid) {
+                        const formData = new FormData();
+                        formData.append('id', _this.dataForm['id']);
+                        formData.append('filetype', _this.dataForm['filetype']);
+                        formData.append('filename', _this.dataForm.filename);
+                        formData.append('version', _this.dataForm.version);
+                        formData.append('remark', _this.dataForm.remark);
+                        const files = this.$refs["importFileInput"].files;
+                        if (files.length > 0){
+                            formData.append('file', files[0]);
+                        }
+                        editAppFile(formData).then(response => {
+                            const res = response.data
+                            if (res.code == 200) {
+                                _this.dialogFormVisible = false
+                                _this.$message({
+                                    message: '更新成功',
+                                    type: 'success'
+                                });
+                                _this.getAppFileListList()
+                            } else {
+                                parseError({error: res.data.message, vm: _this})
+                            }
+                        }).catch(error => {
+                            parseError({error: error, vm: _this})
+                        })
+                    }
+                })
+            },
+            showEditHandle: function (row) {
+                this.resetDataForm();
+                this.dialogStatus = 'editor';
+                this.dataForm.id = row.id;
+                this.dataForm.filetype = row.filetype;
+                this.dataForm.filename = row.filename;
+                this.dataForm.fileurl = row.fileurl;
+                this.dataForm.version = row.version;
+                this.dataForm.remark = row.remark;
+                this.dialogFormVisible = true;
+                this.$nextTick(() => {
+                    this.$refs['dataForm'].clearValidate()
+                })
+            },
+            handleSizeChange: function (val) {
+                this.pageSize = val
+                this.currentPage = 1
+                this.getAppFileListList()
+            },
+            handleCurrentChange: function (val) {
+                this.currentPage = val
+                this.getAppFileListList()
+            },
+            getBtnPermission(btnType) {
+                return checkBtnPermission(this.userType, btnType)
+            },
+            sortChange(param){
+                this.sort = param.prop;
+                this.order = param.order;
+                this.getAppFileListList();
+            },
+            showProductHandle(){
+                this.productDialogFormVisible = true;
+            },
+            showEnterprise(){
+                this.enterpriseDialogFormVisible = true;
+            },
+            downloadHandle(fileurl){
+                window.open(fileurl, '_blank')
+                ;
+            },
+
+        }
+    }
+</script>
+
+<style scoped>
+
+</style>

--
Gitblit v1.9.2