Просмотр исходного кода

Merge branch 'dev' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend into dengfei

695593266@qq.com 9 месяцев назад
Родитель
Сommit
d6fb7f1874

+ 23 - 0
src/api/appUpdate/index.js

@@ -0,0 +1,23 @@
+import request from '@/utils/request';
+import { download } from '@/utils/file';
+/**
+ * 获取信息列表
+ */
+export async function getTableList(params) {
+  const res = await request.get(`/sys/appupdates/page`, { params });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 新增信息
+ */
+export async function addInformation(data) {
+  const res = await request.post(`/sys/appupdates/save`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 21 - 18
src/components/upload/fileUpload.vue

@@ -11,9 +11,13 @@
       :before-upload="beforeUpload"
       :file-list="fileList"
       :show-file-list="!showLib"
+      :limit="limit"
+      v-bind="$attrs"
     >
       <slot>
-        <el-button type="primary" icon="el-icon-plus" size="mini">点击上传</el-button>
+        <el-button type="primary" icon="el-icon-plus" size="mini"
+          >点击上传</el-button
+        >
       </slot>
     </el-upload>
     <el-button type="primary" class="lib" @click="handleOpenLib" v-if="showLib"
@@ -79,7 +83,7 @@
   export default {
     props: {
       value: {
-        type: [Array,String],
+        type: [Array, String],
         default: () => []
       },
       // 所属模块
@@ -103,7 +107,7 @@
         default: 10
       }
     },
-    data () {
+    data() {
       return {
         documentVisible: false,
         selectItem: null,
@@ -149,7 +153,7 @@
     },
     computed: {
       fileList: {
-        set (val) {
+        set(val) {
           // console.log(val);
           this.$emit(
             'input',
@@ -159,9 +163,9 @@
             }))
           );
         },
-        get () {
+        get() {
           // console.log(this.value, 2);
-          if(!Array.isArray(this.value)) return []
+          if (!Array.isArray(this.value)) return [];
           const arr =
             (this.value &&
               this.value.map((item) => ({
@@ -176,37 +180,36 @@
 
     methods: {
       //点击查看图片
-      handleItem(file){
-
-       getFile({ objectName: file.storePath }, file.name);
+      handleItem(file) {
+        getFile({ objectName: file.storePath }, file.name);
       },
-      delFileList () {
+      delFileList() {
         this.$emit('input', []);
       },
-      handleOpenLib () {
+      handleOpenLib() {
         this.documentVisible = true;
         this.$nextTick(() => {
           this.reload();
         });
       },
       //图文档勾选
-      submitDocument () {
+      submitDocument() {
         this.$emit('input', [
           { url: this.selectItem.storePath, ...this.selectItem }
         ]);
         this.documentVisible = false;
       },
-      datasource ({ page, limit }) {
+      datasource({ page, limit }) {
         return getFileList({
           ...this.documentForm,
           pageNum: page,
           size: limit
         });
       },
-      reload () {
+      reload() {
         this.$refs.table.reload();
       },
-      beforeRemove (file) {
+      beforeRemove(file) {
         if (file.id) {
           return removeFile({
             fileId: file.id
@@ -217,10 +220,10 @@
           return true;
         }
       },
-      handleRemove (file, fileList) {
+      handleRemove(file, fileList) {
         this.fileList = fileList;
       },
-      beforeUpload (file) {
+      beforeUpload(file) {
         if (file.size / 1024 / 1024 > this.size) {
           this.$message.error(`大小不能超过 ${this.size}MB`);
           return false;
@@ -244,7 +247,7 @@
           return res.data;
         });
       },
-      handlRequest () {
+      handlRequest() {
         return Promise.resolve();
       }
     }

+ 119 - 0
src/views/appUpdate/components/addOrEditDialog.vue

@@ -0,0 +1,119 @@
+<template>
+  <ele-modal
+    custom-class="ele-dialog-form long-dialog-form"
+    :centered="true"
+    :visible.sync="addOrEditDialogFlag"
+    title="新增"
+    append-to-body
+    :close-on-click-modal="false"
+    width="40%"
+    :before-close="cancel"
+    :maxable="true"
+  >
+    <el-form
+      ref="form"
+      :model="form"
+      :rules="rules"
+      class="el-form-box"
+      label-width="110px"
+    >
+      <el-row :gutter="12">
+        <el-col :span="24">
+          <el-form-item label="版本号" prop="versionCode">
+            <el-input v-model="form.versionCode"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="12">
+        <el-col :span="24">
+          <el-form-item label="上传安装包" prop="name">
+            <fileUpload
+              v-model="form.fileAttach"
+              module="main"
+              :showLib="false"
+              :limit="1"
+              :size="100"
+              :accept="'.apk'"
+            />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row :gutter="12">
+        <el-col :span="16">
+          <el-form-item label="发布说明" prop="releaseNotes">
+            <el-input v-model="form.releaseNotes" type="textarea"> </el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <div slot="footer">
+      <el-button type="primary" @click="handleSave">保存</el-button>
+      <el-button @click="cancel">返回</el-button>
+    </div>
+  </ele-modal>
+</template>
+
+<script>
+  import { addInformation } from '@/api/appUpdate';
+  import FileUpload from '@/components/upload/fileUpload.vue';
+
+  export default {
+    name: 'addOrEditDIalog',
+    props: {
+      addOrEditDialogFlag: Boolean
+    },
+    components: {
+      FileUpload
+    },
+    data() {
+      return {
+        form: {
+          versionCode: '',
+          releaseNotes: '',
+          fileAttach: []
+        }
+      };
+    },
+    computed: {
+      rules() {
+        return {
+          versionCode: [{ required: true, message: '请输入', trigger: 'change' }],
+          releaseNotes: [
+            { required: true, message: '请输入', trigger: 'blur' }
+          ],
+          fileAttach: [{ required: true, message: '请选择', trigger: 'change' }]
+        };
+      }
+    },
+    methods: {
+      async init() {
+        // this.form.versionCode = await getCode('app_update_version_code');
+      },
+      handleSave() {
+        console.log(this.form);
+
+        this.$refs.form.validate(async (valid) => {
+          if (!valid) return;
+          try {
+            this.form.fileName = this.form.fileAttach[0].name;
+            this.form.fileStorePath = this.form.fileAttach[0].storePath;
+            this.form.fileUrl = this.form.fileAttach[0].url;
+            this.form.fileSize = this.form.fileAttach[0].size;
+            await addInformation(this.form);
+            this.$message.success('操作成功');
+            this.cancel();
+            this.$emit('reload');
+          } catch (error) {
+            console.log(error);
+          }
+        });
+      },
+      //关闭弹窗
+      cancel() {
+        this.$emit('update:addOrEditDialogFlag', false);
+      }
+    }
+  };
+</script>
+
+<style scoped lang="scss"></style>

+ 135 - 0
src/views/appUpdate/index.vue

@@ -0,0 +1,135 @@
+<template>
+  <div class="ele-body">
+    <el-card shadow="never">
+      <!-- 搜索表单 -->
+      <!-- <index-search :typeList="typeList" @search="reload" /> -->
+      <!-- 数据表格 -->
+      <ele-pro-table
+        ref="table"
+        height="calc(100vh - 325px)"
+        :columns="columns"
+        :datasource="datasource"
+        :selection.sync="selection"
+        row-key="id"
+        :pageSize="this.$store.state.tablePageSize"
+      >
+        <!-- 表头工具栏 -->
+        <template v-slot:toolbar>
+          <el-button
+            size="small"
+            type="primary"
+            icon="el-icon-plus"
+            class="ele-btn-icon"
+            @click="openEdit('', 'add')"
+            v-if="$hasPermission('main:version:save')"
+          >
+            新建
+          </el-button>
+        </template>
+        <template v-slot:fileUrl="{ row }">
+          <el-link
+            size="mini"
+            type="text"
+            @click="downloadFile(row)"
+            v-if="row.fileUrl"
+          >
+            下载
+          </el-link>
+        </template>
+      </ele-pro-table>
+    </el-card>
+    <!-- 新增/编辑/详情弹窗 -->
+    <add-or-edit-dialog
+      :addOrEditDialogFlag.sync="addOrEditDialogFlag"
+      v-if="addOrEditDialogFlag"
+      ref="addOrEditDialogRef"
+      @reload="reload"
+    />
+  </div>
+</template>
+
+<script>
+  import addOrEditDialog from './components/addOrEditDialog.vue';
+  import { getFile } from '@/api/system/file';
+  import { getTableList, addInformation } from '@/api/appUpdate';
+
+  export default {
+    name: 'technologyProduction',
+    components: {
+      addOrEditDialog
+    },
+    data() {
+      return {
+        // 表格列配置
+        columns: [
+          {
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center'
+          },
+          {
+            prop: 'versionCode',
+            label: '版本号',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
+
+          {
+            prop: 'releaseNotes',
+            label: '发布说明',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
+          {
+            slot: 'fileUrl',
+            prop: 'fileUrl',
+            label: '下载安装包',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 150,
+            align: 'center',
+            resizable: false,
+            slot: 'action',
+            showOverflowTooltip: true
+          }
+        ],
+
+        // 是否显示编辑弹窗
+        addOrEditDialogFlag: false
+      };
+    },
+
+    computed: {},
+    methods: {
+      /* 表格数据源 */
+      async datasource({ page, limit, where, order }) {
+        return await getTableList({
+          ...where,
+          ...order,
+          pageNum: page,
+          size: limit
+        });
+      },
+
+      downloadFile(file) {
+        getFile({ objectName: file.fileStorePath }, '智慧工厂');
+      },
+      /* 刷新表格 */
+      reload(where) {
+        this.$refs.table.reload({ page: 1, where: where });
+      },
+      /* 打开编辑弹窗 */
+      openEdit(row = {}, type) {
+        this.addOrEditDialogFlag = true;
+        this.$nextTick(() => {
+          this.$refs.addOrEditDialogRef.init(type, { ...row });
+        });
+      }
+    }
+  };
+</script>