Browse Source

publish-add

zhangxin 2 years ago
parent
commit
af1cab7828
2 changed files with 268 additions and 1 deletions
  1. 1 0
      package.json
  2. 267 1
      src/views/publisher/addPublisher.vue

+ 1 - 0
package.json

@@ -39,6 +39,7 @@
     "@riophae/vue-treeselect": "0.4.0",
     "async-validator": "^1.11.5",
     "axios": "0.24.0",
+    "babel-plugin-component": "^1.1.1",
     "clipboard": "2.0.8",
     "core-js": "3.25.3",
     "echarts": "5.4.0",

+ 267 - 1
src/views/publisher/addPublisher.vue

@@ -1,3 +1,269 @@
 <template>
-    <h1>新建发行方</h1>
+    <div>
+      <!-- card组件 -->
+      <el-card
+        class="announcementBox"
+        style="width: 700px; padding-top: 30px; padding-bottom: 30px"
+      >
+        <div class="content">
+          <!-- 表单组件 -->
+          <el-form
+            :model="ruleForm"
+            :rules="rules"
+            ref="ruleForm"
+            label-width="100px"
+            class="demo-ruleForm"
+          >
+            <!-- 表单项组件 -->
+            <el-form-item label="发行方名称:" prop="issuerName">
+              <el-input
+                v-model="ruleForm.issuerName"
+                placeholder="请输入发行方名称"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="联系人:" prop="createBy">
+              <el-input
+                v-model="ruleForm.createBy"
+                placeholder="请输入联系人"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="联系电话:" prop="mobile">
+              <el-input
+                v-model="ruleForm.mobile"
+                placeholder="请输入联系电话"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="电子邮箱:" prop="email">
+              <el-input
+                v-model="ruleForm.email"
+                placeholder="请输入电子邮箱"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="详细地址:" prop="updateBy">
+              <el-input
+                v-model="ruleForm.updateBy"
+                placeholder="请输入详细地址"
+              ></el-input>
+            </el-form-item>
+            <!-- 上传头像 -->
+            <el-form-item label="上传头像:" prop="avatar">
+              <el-upload
+                class="avatar-uploader"
+                :action="upLoadUrl"
+                accept="image/*"
+                :show-file-list="false"
+                :on-success="handleAvatarSuccess"
+              >
+                <img
+                  v-if="ruleForm.avatar"
+                  :src="ruleForm.avatar"
+                  class="avatar"
+                />
+                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+              </el-upload>
+            </el-form-item>
+            <el-form-item label="备注:" prop="remark">
+              <el-input
+                type="textarea"
+                :rows="5"
+                placeholder="请输入备注"
+                v-model="ruleForm.remark"
+              ></el-input>
+            </el-form-item>
+            <!-- 创建按钮 -->
+            <div class="button" v-show="createVisible">
+              <el-form-item>
+                <el-button type="primary" @click="submitForm('ruleForm')">
+                  提交
+                </el-button>
+                <el-button @click="resetForm('ruleForm')">重置</el-button>
+              </el-form-item>
+            </div>
+            <!-- 修改按钮 -->
+            <div class="button" v-show="!createVisible">
+              <el-form-item>
+                <el-button type="primary" @click="update">
+                  提交
+                </el-button>
+                <el-button @click="cancel">取消</el-button>
+              </el-form-item>
+            </div>
+          </el-form>
+        </div>
+      </el-card>
+    </div>
 </template>
+<script>
+
+  export default {
+    name: "IssuerCreate",
+    data() {
+      return {
+        // 表单数据
+        ruleForm: {
+          // 发行方ID
+          issuerID:"",
+          // 发行方名称
+          issuerName: "",
+          // 联系人
+          createBy: "",
+          // 联系电话
+          mobile: "",
+          // 电子邮箱
+          email: "",
+          // 详细地址
+          updateBy: "",
+          // 头像
+          avatar: "",
+          // 备注
+          remark: "",
+        },
+        // 表单校验规则
+        rules: {
+          // 发行方名称 校验规则 不能为空
+          issuerName: [
+            { required: true, message: "请输入发行方名称", trigger: "blur" },
+          ],
+        },
+        // 
+        // 未修改前的发行方数据
+        row:{},
+        // 按钮可见性
+        createVisible:true,
+        upLoadUrl: process.env.VUE_APP_BASE_API  + "/files/send"
+      };
+    },
+    created(){
+      this.getRow();
+    },
+    methods: {
+      // 提交表单
+      submitForm(formName) {
+        // 校验表单
+        this.$refs[formName].validate((valid) => {
+          if (valid) {
+            // 校验通过 调接口提交数据
+            createIssuer(this.ruleForm).then((res) => {
+              if (res.code === 200) {
+                // 如果返回状态码为200 提示添加成功 200为后端定义成功状态码
+                // 提示添加成功
+                this.$message({
+                  message: "添加成功",
+                  type: "success",
+                });
+                // 重置表单
+                this.resetForm(formName);
+                // 返回上一页 真实接口取消注释
+                // this.$router.back();
+              }
+            });
+          }
+        });
+      },
+      // 自定义上传头像 覆盖默认上传
+      handleUpload({ file }) {
+        // 创建formdata对象
+        const formData = new FormData();
+        // 将文件添加到formdata对象中
+        formData.append("file", file);
+        // 调用上传头像接口
+        uploadAvatar(formData).then((res) => {
+          if (res.code === 200) {
+            // 如果返回状态码为200 将返回的头像地址赋值给表单头像字段
+            this.ruleForm.avatar = res.data;
+          }
+        });
+      },
+      // 重置表单
+      resetForm(formName) {
+        this.$refs[formName].resetFields();
+      },
+      // 获取修改发行方信息
+      getRow(){
+        if(this.$route.params.row !=null || undefined){
+          // console.log('row',this.$route.params.row)
+          this.ruleForm = {...this.$route.params.row};
+          this.row = {...this.$route.params.row};
+          this.createVisible = false;
+        }
+      },
+      // 修改--提交按钮
+      update(){
+        function isSame(obj1,obj2){
+          for(let key in obj1){
+            if(obj1[key] != obj2[key])
+              return false;
+          }
+          return true;
+        }
+        if(isSame(this.row,this.ruleForm)){
+          this.$message({
+            message: '数据没有进行修改',
+            type: 'warning'
+          });
+          return;
+        }
+        this.$confirm('是否确认修改?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          updateIssuer(this.ruleForm).then((res)=>{
+            this.$message({
+              type: 'success',
+              message: res.msg,
+            });
+            this.$router.back();
+          }).catch((res)=>{
+            this.$message({
+              type: 'error',
+              message: '修改失败!'
+            });
+          })
+        }).catch(_=>_);
+      },
+      // 修改--取消按钮
+      cancel(){
+        this.$router.back();
+      },
+      // 上传头像成功
+      handleAvatarSuccess(res, file) {
+        this.$message({
+          type: 'success',
+          message: '上传成功!'
+        });
+        this.ruleForm.avatar = URL.createObjectURL(file.raw);
+      },
+    },
+    
+  };
+  </script>
+  
+  <style>
+  .announcementBox {
+    margin: 40px auto;
+  }
+  .avatar-uploader .el-upload {
+    border: 1px dashed #d9d9d9;
+    border-radius: 6px;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+  }
+  .avatar-uploader .el-upload:hover {
+    border-color: #409eff;
+  }
+  .avatar-uploader-icon {
+    font-size: 28px;
+    color: #8c939d;
+    width: 150px;
+    height: 150px;
+    line-height: 150px;
+    text-align: center;
+  }
+  .avatar {
+    width: 150px;
+    height: 150px;
+    display: block;
+  }
+  </style>