zhaoxiaoqiang
2023-09-05 f867c1a87123e0dae74ec36591433082df094b75
src/views/qyp-project-management/index.vue
@@ -50,12 +50,15 @@
            </el-form-item>
          </div>
          <el-form-item style="text-align: right;">
            <el-button type="primary" style="margin-left: 10px;margin-bottom: 8px;" v-if='filterBtnById("150102")' @click="addProduct">新 增</el-button>
            <!--  v-if='filterBtnById("150102")' -->
            <el-button type="primary" style="margin-left: 10px;margin-bottom: 8px;" @click="onSearch">查 询</el-button>
          </el-form-item>
        </el-form>
      </div>
      <div class="table_box">
        <div  style="margin-left: 10px;text-align: right;">
          <el-button type="primary" size="small" @click="addProduct">新增项目</el-button>
        </div>
        <Etable
          hasIndex
          httpUrl="projectList"
@@ -64,14 +67,55 @@
          @getDataList="getDataList"
          :exportUrl="{
            url: '/qyp/project/export',
            powerId: '150103',
            powerId: '',
            name: '项目列表',
          }"
        ></Etable>
      </div>
      <el-dialog top="8vh"  title="新增商品" :visible.sync="addProd" width="60%">
        <!-- 新增商品名称 -->
      <el-dialog top="2vh"  :title="title" :visible.sync="addProd" width="60%">
          <!-- 新增商品名称 -->
          <el-form :model="ruleForm" :rules="rules" ref="ruleForm" size="small" label-width="120px" class="demo-ruleForm">
            <el-form-item label="项目名称" prop="projName">
              <el-input v-model="ruleForm.projName" :disabled="disabled" :maxlength="50"></el-input>
            </el-form-item>
            <el-form-item label="项目价格" prop="projPrice">
              <el-input v-model="ruleForm.projPrice" :disabled="disabled" :maxlength="10"></el-input>
            </el-form-item>
            <el-form-item label="项目链接" prop="projUrl">
              <el-input v-model="ruleForm.projUrl" :disabled="disabled" :maxlength="150"></el-input>
            </el-form-item>
            <el-form-item label="项目描述" prop="projDesc">
              <el-input type="textarea" v-model="ruleForm.projDesc" :disabled="disabled"></el-input>
            </el-form-item>
            <el-form-item label="项目状态" prop="status">
              <el-radio-group v-model="ruleForm.status" :disabled="disabled">
                <el-radio v-for="item in relustObj.statusList" :key="item.code" :label="item.code">{{ item.name }}</el-radio>
              </el-radio-group>
            </el-form-item>
            <el-form-item label="项目背景图" v-if="addProd" ref="backFilePath" prop="backFilePath">
               <uploadImg  v-if="addProd" @sendList="imgSet($event,'backFilePath')" :disabled="disabled"  :defaultList="ruleForm.backFilePath"></uploadImg>
            </el-form-item>
            <el-form-item label="项目宣传标语" ref="logoFilePath" prop="logoFilePath">
              <uploadImg v-if="addProd" @sendList="imgSet($event,'logoFilePath')" :disabled="disabled"  :defaultList="ruleForm.logoFilePath"></uploadImg>
            </el-form-item>
            <el-form-item label="项目优惠券图片" ref="titleFilePath" prop="titleFilePath">
              <uploadImg v-if="addProd"  @sendList="imgSet($event,'titleFilePath')" :disabled="disabled" :defaultList="ruleForm.titleFilePath"></uploadImg>
            </el-form-item>
            <el-form-item label="会员权益" ref="qyFilePath"  prop="qyFilePath">
              <uploadImg v-if="addProd" @sendList="imgSet($event,'qyFilePath')"     :disabled="disabled" :defaultList="ruleForm.qyFilePath"></uploadImg>
            </el-form-item>
            <!-- <el-form-item label="活动规则" ref="ruleFilePath" prop="ruleFilePath">
              <uploadImg v-if="addProd"  @sendList="imgSet($event,'ruleFilePath')" :disabled="disabled" :defaultList="ruleForm.ruleFilePath"></uploadImg>
            </el-form-item> -->
            <el-form-item label="活动规则" prop="ruleContent">
              <el-input type="textarea" v-model="ruleForm.ruleContent" :disabled="disabled"></el-input>
              <!-- <uploadImg v-if="addProd"  @sendList="imgSet($event,'ruleFilePath')" :disabled="disabled" :defaultList="ruleForm.ruleFilePath"></uploadImg> -->
            </el-form-item>
            <el-form-item style="text-align:right;" v-if="!disabled">
              <el-button type="primary" @click="submitForm('ruleForm')">保存</el-button>
              <!-- <el-button @click="resetForm('ruleForm')">重置</el-button> -->
            </el-form-item>
          </el-form>
      
      </el-dialog>
    </div>
@@ -80,55 +124,49 @@
  <script>
  import Etable from "../../components/table.vue";
  import {projectInit,projectAdd,projectDtl,projectUpdata} from "@/api/credit";
  //   import orderDetail from "./orderDetail.vue";
  import uploadImg from "@/components/upload.vue";
  import MultipleSelect from "../../components/secect.vue";
  import moment from 'moment';
  export default {
    name: "order",
    components: { Etable, MultipleSelect, uploadImg },
    components: { Etable,uploadImg },
    data() {
      let validateImage = (rule, value, callback) => { //验证器
        if (!this.payForm.prodListImages.length) {     //为true代表图片在  false报错
          callback(new Error('请上传商品展示图片'));
      let backFilePathImage = (rule, value, callback) => { //验证器
        if (!this.ruleForm.backFilePath.length) {     //为true代表图片在  false报错
          callback(new Error('请上传项目背景图'));
        } else {
          callback();
        }
      };
      let validateImage1 = (rule, value, callback) => { //验证器
        if (!this.payForm.prodImages.length) {     //为true代表图片在  false报错
          callback(new Error('请上传商品轮播图'));
      let logoFilePathImage = (rule, value, callback) => { //验证器
        if (!this.ruleForm.logoFilePath.length) {     //为true代表图片在  false报错
          callback(new Error('请上传项目logo图'));
        } else {
          callback();
        }
      };
      let validateImage2 = (rule, value, callback) => { //验证器
        if (!this.payForm.prodDescImages.length) {     //为true代表图片在  false报错
          callback(new Error('请上传商品详情图片'));
      let titleFilePathImage = (rule, value, callback) => { //验证器
        if (!this.ruleForm.titleFilePath.length) {     //为true代表图片在  false报错
          callback(new Error('请上传平台头图'));
        } else {
          callback();
        }
      };
      let qyFilePathImage = (rule, value, callback) => { //验证器
        if (!this.ruleForm.qyFilePath.length) {     //为true代表图片在  false报错
          callback(new Error('请上传会员权益图'));
        } else {
          callback();
        }
      };
      let ruleFilePathImage = (rule, value, callback) => { //验证器
        if (!this.ruleForm.ruleFilePath.length) {     //为true代表图片在  false报错
          callback(new Error('请上传会员权益图'));
        } else {
          callback();
        }
      };
      return {
          disabled: true,
          payForm: {
            prodImages: [],
            prodListImages:[],
            prodDescImages:"",
          },
          licensePaths: [],
          prodListImages:[],
          prodDescImages:[],
          payFormRule: {
            prodListImage:[{ required: true,  trigger: "change",validator: validateImage}],
            prodImages:[{ required: true,  trigger: "change",validator: validateImage1}],
            prodDescImages:[{ required: true,  trigger: "change",validator: validateImage2}],
            desc: [{ required: true, message: "请输入商品简介", trigger: "blur" }],
            status:[{ required: true, message: "请选择上架状态", trigger: "change" }]
          },
          formInline: {
            status:"all",
          },
          disabled: false,
          formInline: {status:"all"},
          searchData: {},
          columns: [
            {
@@ -146,8 +184,7 @@
            {
              lable: "项目链接",
              prop: "projUrl",
              align: "center",
              width: "200",
              align: "center"
            },
            {
              lable: "创建时间",
@@ -172,54 +209,124 @@
            {
              lable: "操作",
              align: "center",
              width: "180",
              width: "200",
              fixed: "right",
              render: (h, scope) => {
                return h("div", [
                  h(
                    "span",
                    "el-button",
                    {
                      props:{
                        type:'text'
                      },
                      style: {
                        cursor: "pointer",
                        color: "#3C8EFE",
                        display: this.filterBtnById(150101)
                          ? "inline-block"
                          : "none",
                        // display: this.filterBtnById(150101)
                        //   ? "inline-block"
                        //   : "none",
                      },
                      on: {
                        click: () => {
                          this.title = '项目详情';
                          this.disabled = true;
                          let {projId} = scope.row;
                          this.getProductDetail(projId);
                        },
                      },
                    },
                    "查看详情"
                  ),
                  h(
                    "span",
                    "el-button",
                    {
                      props:{
                        type:'text'
                      },
                      style: {
                        cursor: "pointer",
                        "margin-left": "8px",
                        color: "#3C8EFE",
                        display: this.filterBtnById(150104)
                          ? "inline-block"
                          : "none",
                        "margin-left": "15px",
                        // display: this.filterBtnById(150104)
                        //   ? "inline-block"
                        //   : "none",
                      },
                      on: {
                        click: () => {
                          this.title = '编辑项目';
                          this.disabled = false;
                          let {projId} = scope.row;
                          this.getProductDetail(projId);
                        },
                      },
                    },
                    "编辑"
                  ),
                  )
                ]);
              },
            },
          ],
          relustObj: {},
          addProd:false,
          createdTime:[]
          createdTime:[],
          ruleForm:{
            backFilePath:[],
            logoFilePath:[],
            titleFilePath:[],
            qyFilePath:[],
            ruleFilePath:[]
          },
          rules: {
              projName: [
                { required: true, message: '请输入项目名称', trigger: 'blur' }
              ],
              projPrice: [
                { required: true, message: '请输入项目价格', trigger: 'blur' }
              ],
              projUrl: [
                { required: true, message: '请输入项目链接', trigger: 'blur' }
              ],
              projDesc: [
                { required: true, message: '请输入项目描述', trigger: 'blur' }
              ],
              status: [
                { required: true, message: '请选择项目状态', trigger: 'change' }
              ],
              backFilePath: [
                { required: true,trigger: 'change',validator: backFilePathImage }
              ],
              logoFilePath: [
                { required: true,  trigger: 'change',validator: logoFilePathImage }
              ],
              titleFilePath: [
                { required: true, trigger: 'change',validator: titleFilePathImage  }
              ],
              qyFilePath: [
                { required: true,  trigger: 'change' ,validator: qyFilePathImage }
              ],
              ruleFilePath: [
                { required: true,  trigger: 'change',validator: ruleFilePathImage  }
              ]
          },
          title:"新增项目"
      }
    },
    watch:{
      addProd:{
        handler: function(val) {
          if(!val){
            this.ruleForm = {
              projName:"",
              projPrice:"",
              projUrl:"",
              projDesc:"",
              status:"",
              backFilePath:[],
              logoFilePath:[],
              titleFilePath:[],
              qyFilePath:[],
              ruleFilePath:[]
            };
            this.$refs['ruleForm'].resetFields();
          }
        },
        deep: true
      }
    },
    //生命周期 - 创建完成(可以访问当前this实例)
@@ -248,7 +355,9 @@
        this.addProd = false;
      },
      addProduct(){
       this.disabled = false;
        this.title = '新增项目';
        this.addProd = true;
        this.disabled = false;
      },
      onSearch() {
        if (this.createdTime && this.createdTime.length) {
@@ -284,19 +393,59 @@
      },
      getDataList(e) {
      },
      // prodDescSend(e){
      //    //文件上传
      //   this.payForm.prodDescImages = e.map((res) => {
      //     return res.filePath;
      //   });
      //   this.$refs.prodDescImagesIplaod.clearValidate();
      // },
      // productShowUSend(e){
      //   this.payForm.prodListImages = e.map((res) => {
      //     return res.filePath;
      //   });
      //   this.$refs.productShowUpload.clearValidate();
      // },
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            let {backFilePath,logoFilePath,titleFilePath,qyFilePath,ruleFilePath,projId} = this.ruleForm;
            let method = {projectUpdata,projectAdd};
            let data  = {};
            if(projId){
              data = {...this.ruleForm,backFilePath:backFilePath[0],logoFilePath:logoFilePath[0],titleFilePath:titleFilePath[0],qyFilePath:qyFilePath[0],ruleFilePath:ruleFilePath[0]}
            }else{
              data = {...this.ruleForm,backFilePath:backFilePath[0],logoFilePath:logoFilePath[0],titleFilePath:titleFilePath[0],qyFilePath:qyFilePath[0],ruleFilePath:ruleFilePath[0]}
            }
            method[projId?"projectUpdata":"projectAdd"](data).then(res=>{
              this.$message.success("创建成功");
              this.addProd = false;
              this.onSearch();
            })
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      resetForm(formName) {
        this.$refs[formName].resetFields();
      },
      imgSet(e,id){
        let fileRef = id + "";
         //文件上传
        this.ruleForm[id] = e.map((res) => {
          return res.filePath;
        });
        this.$refs[fileRef].clearValidate();
      },
      getProductDetail(projId,type){
        projectDtl({projId:projId}).then(({body})=>{
          let {backFilePath,logoFilePath,titleFilePath,qyFilePath,ruleFilePath} = body;
          body.backFilePath = this.setDefaultImg(backFilePath,'backFilePath');
          body.logoFilePath = this.setDefaultImg(logoFilePath,'logoFilePath');
          body.titleFilePath = this.setDefaultImg(titleFilePath,"titleFilePath");
          body.qyFilePath = this.setDefaultImg(qyFilePath,"qyFilePath");
          body.ruleFilePath = this.setDefaultImg(ruleFilePath,"ruleFilePath");
          this.ruleForm = body;
          this.$nextTick(()=>{
            this.addProd = true;
          });
        })
      },
      setDefaultImg(url,type){
        let backArr = [url].map((n,index)=>{
          return {url:n,filePath:n,uid:type+index,fileId:type+index,fileName:n,name:n};
        });
        return backArr
      }
    }
  };
  </script>