Jelajahi Sumber

项目列表

wuhao 3 tahun lalu
induk
melakukan
2f03a2029f
1 mengubah file dengan 127 tambahan dan 198 penghapusan
  1. 127 198
      src/views/project/list/detail.vue

+ 127 - 198
src/views/project/list/detail.vue

@@ -1,16 +1,17 @@
 <template>
   <div class="app-container">
-    <el-form class="form" :model="form_create" label-width="100px" size="small">
+    <!-- 项目表单 -->
+    <el-form class="form" :model="projectForm" label-width="100px">
       <el-form-item label="项目名称:">
-        <el-input v-model="form_create.name" placeholder="请输入项目名称"></el-input>
+        <el-input v-model="projectForm.name" placeholder="请输入项目名称" />
       </el-form-item>
       <el-form-item label="图标:">
-        <Upload :url="form_create.pic" @success="getUpload" @delete="getUpload" />
-        <span style="fontSize:12px; color:#909399">图片规格为256*256,大小在1MB以内的PNG图片</span>
+        <Upload :url="projectForm.pic" @success="getUpload($event, 'icon')" @delete="getUpload($event, 'icon')" />
       </el-form-item>
-      <el-form-item v-if="this.$route.query.key === 'edit'" label="版本管理:" style="width:1500px">
-        <el-button type="primary" icon="el-icon-plus" @click="dialogVisible_create = true">新增</el-button>
-        <el-table :data="tableData_version" v-loading="loading" height="318px">
+      <el-form-item label="版本管理:" style="width: 1500px">
+        <!-- app列表 -->
+        <el-button type="primary" icon="el-icon-plus" @click="getDialog()">新增</el-button>
+        <el-table :data="versionData" v-loading="loading" height="342px">
           <el-table-column type="index" label="序号" align="center" />
           <el-table-column prop="name" label="应用名称" align="center" />
           <el-table-column prop="version" label="最新版本" align="center" />
@@ -20,279 +21,207 @@
           <el-table-column prop="status" label="当前状态" align="center" :formatter="statusFormatter" />
           <el-table-column label="操作" align="center">
             <template slot-scope="scope">
-              <!-- <el-button type="text">上架</el-button>
-              <el-button type="text">下架</el-button>-->
-              <el-button type="text" @click="getRelease(scope.row)">发布</el-button>
-              <el-button type="text" @click="getChange(scope.row)">更新</el-button>
-              <el-dropdown @command="getCommand" style="margin-left: 10px">
+              <el-button v-if="scope.row.status === 0" type="text" @click="getDialog(scope.row, '上架')">上架</el-button>
+              <el-button v-else type="text" @click="getDialog(scope.row, '下架')">下架</el-button>
+              <el-button type="text" @click="getDialog(scope.row, '更新')">更新</el-button>
+              <el-button type="text" v-clipboard:copy="scope.row.downUrl">复制下载地址</el-button>
+              <!-- <el-dropdown @command="getCommand" style="margin-left: 10px">
                 <el-button type="text">更多</el-button>
                 <el-dropdown-menu slot="dropdown">
-                  <el-dropdown-item command="edit">编辑</el-dropdown-item>
-                  <el-dropdown-item command="copy"  v-clipboard:copy="scope.row.downUrl">复制下载地址</el-dropdown-item>
+                  <el-dropdown-item command="copy" v-clipboard:copy="scope.row.downUrl">复制下载地址</el-dropdown-item>
                   <el-dropdown-item command="history">查看版本记录</el-dropdown-item>
                 </el-dropdown-menu>
-              </el-dropdown>
+              </el-dropdown>-->
             </template>
           </el-table-column>
         </el-table>
         <pagination
-          v-show="version_total>0"
-          :total="version_total"
-          :page.sync="form_version.pageNum"
-          :limit.sync="form_version.pageSize"
-          @pagination="getPage"
+          v-show="total>0"
+          :total="total"
+          :page.sync="versionForm.pageNum"
+          :limit.sync="versionForm.pageSize"
+          @pagination="getList"
         />
       </el-form-item>
+      <el-form-item>
+        <el-button @click="cancel">取消</el-button>
+        <el-button type="primary" @click="getSubmit">确定</el-button>
+      </el-form-item>
     </el-form>
-    <div class="form-btn">
-      <el-button size="small" @click="getCancel">取消</el-button>
-      <el-button type="primary" size="small" @click="getSubmit">确定</el-button>
-    </div>
-    <!-- 新增 -->
-    <el-dialog :visible.sync="dialogVisible_create" title="新增" width="500px">
-      <el-form :model="formCreate" ref="formCreate" label-width="100px">
+
+    <!-- 新增弹窗 -->
+    <el-dialog :visible.sync="dialogVisible" :before-close="getCancel" :title="title" width="500px">
+      <el-form :model="addForm" ref="addForm" label-width="100px">
         <el-form-item label="应用名称:">
-          <el-input v-model="formCreate.name" placeholder="请输入应用名称" />
+          <el-input v-model="addForm.name" placeholder="请输入应用名称" />
         </el-form-item>
-        <el-form-item label="系统类:">
-          <el-select v-model="formCreate.os" placeholder="请选择系统类别">
+        <el-form-item label="系统类:">
+          <el-select v-model="addForm.os" placeholder="请选择系统类型">
             <el-option v-for="item in osOptions" :key="item.value" :label="item.label" :value="item.value" />
           </el-select>
         </el-form-item>
         <el-form-item label="应用Logo:">
-          <Upload :url="formCreate.pic" @success="getUploadCreate" @delete="getUploadCreate" />
-        </el-form-item>
-        <el-form-item label="版本号:">
-          <el-input v-model="formCreate.version" placeholder="请输入版本号" />
-        </el-form-item>
-        <el-form-item label="更新内容:">
-          <el-input v-model="formCreate.updateContent" type="textarea" rows="4" placeholder="请输入更新内容" />
-        </el-form-item>
-        <el-form-item label="安装包:">
-          <Upload type="file" @success="getUploadFile" />
+          <Upload :url="addForm.pic" @success="getUpload($event, 'logo')" @delete="getUpload($event, 'logo')" />
         </el-form-item>
-      </el-form>
-      <div slot="footer">
-        <el-button>取消</el-button>
-        <el-button type="primary" @click="getAdd">确定</el-button>
-      </div>
-    </el-dialog>
-
-    <!-- 更新版本 -->
-    <el-dialog :visible.sync="dialogVisible_update" title="更新版本" width="500px">
-      <el-form :model="formUpdate" label-width="100px">
         <el-form-item label="版本号:">
-          <el-input v-model="formUpdate.version" placeholder="请输入版本号" />
+          <el-input v-model="addForm.version" placeholder="请输入版本号" />
         </el-form-item>
         <el-form-item label="更新内容:">
-          <el-input v-model="formUpdate.updateContent" type="textarea" rows="4" placeholder="请输入更新内容" />
+          <el-input v-model="addForm.updateContent" type="textarea" rows="4" placeholder="请输入更新内容"></el-input>
         </el-form-item>
         <el-form-item label="安装包:">
-          <Upload type="file" />
+          <Upload type="file" @success="getUpload($event, 'file')" />
         </el-form-item>
       </el-form>
       <div slot="footer">
-        <el-button>取消</el-button>
-        <el-button type="primary" @click="getUpdate">确定</el-button>
+        <el-button @click="getCancel">取消</el-button>
+        <el-button type="primary" @click="getChange">确定</el-button>
       </div>
     </el-dialog>
-
-    <!-- 编辑 -->
-    <el-dialog :visible.sync="dialogVisible_edit" title="编辑" width="500px">
-      <el-form label-width="100px">
-        <el-form-item label="应用名称:">
-          <el-input placeholder="请输入应用名称" />
-        </el-form-item>
-        <el-form-item label="应用Logo:">
-          <Upload />
-        </el-form-item>
-      </el-form>
-      <div slot="footer">
-        <el-button>取消</el-button>
-        <el-button type="primary">确定</el-button>
-      </div>
-    </el-dialog>
-
-    <!-- 版本记录 -->
-    <el-dialog :visible.sync="dialogVisible_history" title="版本记录" width="1000px">
-      <el-table :data="tableData_history">
-        <el-table-column label="序号" align="center" type="index" />
-        <el-table-column label="版本号" align="center" />
-        <el-table-column label="更新内容" align="center" />
-        <el-table-column label="安装包大小" align="center" />
-        <el-table-column label="创建时间" align="center" />
-        <el-table-column label="当前状态" align="center" />
-        <el-table-column label="操作" align="center">
-          <template>
-            <el-button>下架</el-button>
-            <el-button>上架</el-button>
-            <el-button>编辑</el-button>
-            <el-button>发布</el-button>
-            <el-button>删除</el-button>
-            <el-button>复制下载链接</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-    </el-dialog>
   </div>
 </template>
 
 <script>
 import { add, edit, update, updateAdd, updatePage } from "@/api/project/list";
-import { statusMixin } from '../mixin/index';
 import Upload from "@/components/Upload";
+import { statusMixin, osMixin } from "../mixin/index";
 export default {
-  mixins: [statusMixin],
+  mixins: [statusMixin, osMixin],
   components: {
     Upload,
   },
   data() {
     return {
       // 遮罩层
-      loading: true,
-      // 表单
-      form_create: {},
-      form_version: {
+      loading: false,
+
+      // 项目表单
+      projectForm: {},
+      // 新增表单
+      addForm: {
+        projectId: this.$route.query.row.id,
+      },
+
+      // app列表
+      versionData: [],
+      versionForm: {
+        projectId: this.$route.query.row.id,
         pageNum: 1,
         pageSize: 10,
       },
-      formUpdate: {},
-      formCreate: {},
-      // 列表
-      tableData_version: [
-        {
-          name: "测试",
-        },
-      ],
-      version_total: 0,
-      tableData_history: [
-        {
-          version: 0.1,
-        },
-      ],
-      osOptions: [
-        {
-          value: "IOS",
-          label: "IOS ",
-        },
-        {
-          value: "Android",
-          label: "Android",
-        },
-      ],
-      // 弹窗
-      dialogVisible_create: false,
-      dialogVisible_update: false,
-      dialogVisible_edit: false,
-      dialogVisible_history: false,
+      total: 0,
+
+      // 新增弹窗
+      dialogVisible: false,
+      title: "",
     };
   },
   mounted() {
-    if (this.$route.query.row) {
-      this.form_create = this.$route.query.row;
-      this.formCreate.projectId = this.form_version.projectId =
-        this.$route.query.row.id;
-      this.getPage();
+    let row = this.$route.query.row;
+    if (row) {
+      this.projectForm = row;
+      this.getList();
     }
   },
   methods: {
-    // 更多
-    getCommand(e) {
-      if (e === "edit") {
-        this.dialogVisible_edit = true;
-      } else if (e === "copy") {
-      } else {
-        this.dialogVisible_history = true;
-      }
-    },
-
-    // 上传图标
-    getUpload(e) {
-      this.form_create.pic = e.file;
-    },
-
-    // 上传logo
-    getUploadCreate(e) {
-      this.formCreate.pic = e.file;
-    },
-
-    // 上传安装包
-    getUploadFile(e) {
-      this.formCreate.downUrl = e.file;
-      this.formCreate.size = e.size;
-    },
-
-    // 应用分页
-    getPage() {
+    // 获取版本管理分页
+    getList() {
       this.loading = true;
-      updatePage(this.form_version).then((res) => {
+      updatePage(this.versionForm).then((res) => {
         if (res.code === 0) {
-          this.tableData_version = res.data.records;
-          this.version_total = res.data.total;
+          this.versionData = res.data.records;
+          this.total = res.data.total;
           this.loading = false;
         }
       });
     },
 
-    // 新增
-    getAdd() {
-      updateAdd(this.formCreate).then((res) => {
-        if (res.code === 0) {
-          this.$message.success("新增成功!");
-          this.dialogVisible_create = false;
-          this.getPage();
-        }
-      });
+    // 打开弹窗
+    getDialog(e, key) {
+      this.title = key ? key : "新增";
+      if (e) {
+        this.addForm = e;
+      }
+
+      if (key === "上架") {
+        this.loading = true
+        this.addForm.status = 1;
+        this.getChange();
+      } else if (key === "下架") {
+        this.loading = true
+        this.addForm.status = 0;
+        this.getChange();
+      } else {
+        this.dialogVisible = true;
+      }
     },
 
-    // 发布
-    getRelease(row){
-      this.formUpdate = row
-      this.formUpdate.status = 1
-      this.getUpdate()
+    // 上传
+    getUpload(e, key) {
+      if (key === "icon") {
+        this.projectForm.pic = e.file;
+      } else if (key === "logo") {
+        this.addForm.pic = e.file;
+      } else if (key === "file") {
+        this.addForm.downUrl = e.file;
+        this.addForm.size = e.size;
+      }
     },
 
-    // 更新弹窗
-    getChange(row) {
-      this.dialogVisible_update = true;
-      this.formUpdate = row;
+    // 新增 / 更新版本
+    getChange() {
+      if (this.title === "新增") {
+        updateAdd(this.addForm).then((res) => {
+          if (res.code === 0) {
+            this.$message.success("新增成功!");
+            this.dialogVisible = false;
+            this.getList();
+          }
+        });
+      } else {
+        update(this.addForm).then((res) => {
+          if (res.code === 0) {
+            this.$message.success(`${this.title}成功!`);
+            this.dialogVisible = false;
+            this.getList();
+          }
+        });
+      }
     },
 
-    // 更新
-    getUpdate() {
-      update(this.formUpdate).then((res) => {
-        if (res.code === 0) {
-          this.$message.success("更新成功!");
-          this.dialogVisible_update = false;
-          this.getPage();
-        }
-      });
+    // 取消
+    getCancel() {
+      this.addForm = {
+        projectId: this.$route.query.row.id,
+      };
+      this.dialogVisible = false;
     },
 
-    // 确定
+    // 新建项目
     getSubmit() {
       if (this.$route.query.row) {
-        edit(this.form_create).then((res) => {
+        edit(this.projectForm).then((res) => {
           if (res.code === 0) {
             this.$message.success("修改成功!");
-            this.getCancel();
+            this.cancel();
           }
         });
       } else {
-        add(this.form_create).then((res) => {
+        add(this.projectForm).then((res) => {
           if (res.code === 0) {
             this.$message.success("新增成功!");
-            this.getCancel();
+            this.cancel();
           }
         });
       }
     },
 
-    // 取消
-    getCancel() {
+    // 取消新建项目
+    cancel() {
       this.$tab.closeOpenPage("/project/list");
     },
 
+    // 字典翻译
     statusFormatter(row) {
       return this.selectDictLabel(this.statusOptions, row.status);
     },