Browse Source

暂存合并

Tang 2 years ago
parent
commit
f6992d39b6

+ 3 - 0
src/api/api.js

@@ -84,10 +84,13 @@ import poster from '../fxApi/poster'//海报列表
 import temp from '../fxApi/temp'//分销活动列表
 import orderManageList from '../fxApi/orderManageList'//订单管理
 
+//积分管理
+import integral from "../fxApi/integral"
 
 
 // 导入对应模块------------------------
 export default {
+    ...integral,
     ...orderManageList,
     ...poster,
     ...temp,

+ 50 - 0
src/fxApi/integral.js

@@ -0,0 +1,50 @@
+import request from '@/utils/request' //引入axios请求及拦截器
+export default {
+    //新增商户店铺管理
+    addmallstore(data) {
+        return request({
+            url: '/mall/store', 
+            method: 'post',
+            data
+        })
+    },
+    //修改商户店铺管理
+    editmallstore(data) {
+        return request({
+            url: '/mall/store/edit',
+            method: 'post',
+            data
+        })
+    },
+    //查询商户店铺管理列表
+    mallstorelist(data) {
+        return request({
+            url: '/mall/store/list',
+            method: 'get',
+            params: data
+        })
+    },
+    //获取商户店铺管理详细信息
+    mallstoredata(data) {
+        return request({
+            url: `/mall/store/` + data,
+            method: 'get',
+        })
+    },
+    //商户恢复密码
+    mallstorerestorePwd(data) {
+        return request({
+            url: '/mall/store/restorePwd',
+            method: 'post',
+            data
+        })
+    },
+    //商户修改密码
+    mallstoreupdatePwd(data) {
+        return request({
+            url: '/mall/store/updatePwd',
+            method: 'post',
+            data
+        })
+    },
+}

+ 1 - 1
src/utils/request.js

@@ -9,7 +9,7 @@ axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";
 // 创建axios实例
 // export const baseURL = process.env.VUE_APP_BASE_API
 // export const baseURL = 'https://ptapi.gdzzkj.net/'
-export const baseURL = "http://192.168.1.222:7077/";
+export const baseURL = "http://192.168.1.24:7077/";
 export const BASE_IMG_URL = process.env.VUE_APP_IMG_API;
 const service = axios.create({
   // axios中请求配置有baseURL选项,表示请求URL公共部分

+ 15 - 0
src/views/financed/arap/index.vue

@@ -152,6 +152,7 @@
       :dialogVisible.sync="examineDialogVisible"
       @search="search"
       :info="activeOrderInfo"
+      @update="update"
     ></dislog-set>
     <!-- 坏账设置 -->
     <dislog-bad-bill
@@ -606,6 +607,7 @@ export default {
       roleList: [],
       countInfo: {},
       spanData: {},
+      maps: new Map(),
     };
   },
   created() {
@@ -690,6 +692,7 @@ export default {
       return index + 1;
     },
     changeSearch() {
+      this.maps.clear()
       this.search(2);
     },
     getDataList() {
@@ -727,6 +730,18 @@ export default {
         .catch(() => {
           resolve([]);
         });
+      this.maps.set(tree.id, { tree, treeNode, resolve });
+    },
+    update(parentId) {
+      const { tree, treeNode, resolve } = this.maps.get(parentId);
+      this.$set(
+        this.$refs.tableList.$refs.pagerset.store.states.lazyTreeNodeMap,
+        parentId,
+        []
+      );
+      if (tree) {
+        this.load(tree, treeNode, resolve);
+      }
     },
     // 切换已付待付
     backStatus({ row, column }) {

+ 1 - 0
src/views/financed/components/audit/dislogSet.vue

@@ -254,6 +254,7 @@ export default {
               })
               .then((res) => {
                 this.isShow = false;
+                this.$emit("update",this.info.divideLogId)
                 this.$emit("search");
               })
               .finally(() => {

+ 15 - 2
src/views/financed/orderManageList/index.vue

@@ -273,7 +273,12 @@ export default {
         {
           prop: "roleId",
           placeholder: "角色分类",
-          scope: "roleList",
+          scope: "select",
+          options: [
+            { label: "会计", value: 0 },
+            { label: "财务", value: 1 },
+            { label: "出纳", value: 2 },
+          ],
         },
         // {
         //   prop: "businessFullName",
@@ -308,7 +313,7 @@ export default {
           ],
         },
         {
-          prop: "refundStatusList",
+          prop: "refundStatus",
           placeholder: "退款状态",
           scope: "select",
           options: [
@@ -511,6 +516,8 @@ export default {
       return str;
     },
     exportExcel() {
+      var b = 1
+      var a = "0,1"
       if (this.$refs.tableList.allCheckData.length === 0) {
         this.$message.error("请勾选数据");
         return;
@@ -662,6 +669,12 @@ export default {
         };
       }
       var data = JSON.parse(JSON.stringify(this.formData));
+      if(data.roleId === 0 || data.roleId === 1){
+        data.refundStatusList = "0,3,4"
+      }
+      if(data.roleId === 2){
+        data.refundStatusList = "2,3"
+      }
       if (this.formData.startTime) {
         data.startTime = parseInt(data.startTime / 1000);
       }

+ 75 - 15
src/views/integralManagement/exchangeRules/index.vue

@@ -1,20 +1,67 @@
 <template>
   <div id="">
-    <div class="dis_fx">
-      <el-input-number
-        :controls="false"
-        v-model="formData.a"
-        placeholder="输入积分"
-        :min="0"
-        :precision="0"
-      /><span>积分 =</span>
-      <el-input-number
-        :controls="false"
-        v-model="formData.b"
-        placeholder="输入金额"
-        :min="0"
-        :precision="2"
-      /><span>元</span>
+    <div>
+      <h4>积分规则:</h4>
+      <div class="dis_fx">
+        <el-checkbox v-model="checked"></el-checkbox> 1、一个自然年自动清零
+      </div>
+      <el-button type="primary" @click="submit">确定</el-button>
+      <el-button @click="record">修改记录</el-button>
+      <el-divider></el-divider>
+    </div>
+    <div>
+      <h4>积分兑换:</h4>
+      <div class="dis_fx">
+        <el-checkbox v-model="checked"></el-checkbox> 1、1元 =
+        <el-input-number
+          :controls="false"
+          v-model="formData.a"
+          placeholder="输入积分"
+          :min="0"
+          :precision="0"
+        /><span>积分</span>
+      </div>
+      <el-button type="primary" @click="submit">确定</el-button>
+      <el-button @click="record">修改记录</el-button>
+      <el-divider></el-divider>
+    </div>
+    <div>
+      <h4>积分奖励:</h4>
+      <div class="dis_fx">
+        <el-checkbox v-model="checked"></el-checkbox> 1、下单满<el-input-number
+          :controls="false"
+          v-model="formData.a"
+          placeholder="输入金额"
+          :min="0"
+          :precision="2"
+        />元,送<el-input-number
+          :controls="false"
+          v-model="formData.a"
+          placeholder="输入积分"
+          :min="0"
+          :precision="0"
+        />积分
+      </div>
+      <div class="dis_fx">
+        <el-checkbox v-model="checked"></el-checkbox>
+        2、e管证证书上传,送<el-input-number
+          :controls="false"
+          v-model="formData.a"
+          placeholder="输入积分"
+          :min="0"
+          :precision="0"
+        />积分
+      </div>
+      <div class="dis_fx">
+        <el-checkbox v-model="checked"></el-checkbox>
+        3、分享商品,送<el-input-number
+          :controls="false"
+          v-model="formData.a"
+          placeholder="输入积分"
+          :min="0"
+          :precision="0"
+        />积分
+      </div>
       <el-button type="primary" @click="submit">确定</el-button>
       <el-button @click="record">修改记录</el-button>
     </div>
@@ -33,6 +80,7 @@ export default {
   components: { record },
   data() {
     return {
+      checked: false,
       dialogVisible: false,
       activeData: {},
       formData: {},
@@ -59,15 +107,27 @@ export default {
 </script>
 
 <style lang="scss" scoped>
+.el-checkbox {
+  margin-right: 6px;
+}
 .dis_fx {
+  font-size: 14px;
   display: flex;
   align-items: center;
+  margin-bottom: 10px;
   span {
     flex-shrink: 0;
     margin: 0px 10px;
   }
   .el-input-number {
     width: 120px;
+    margin: 0px 6px;
   }
 }
+h4{
+  font-weight: bold;
+}
+.el-divider{
+  margin: 40px 0px;
+}
 </style>

+ 78 - 12
src/views/integralManagement/giftGoods/dislog.vue

@@ -30,32 +30,50 @@
             <el-option label="积分商城" :value="1"> </el-option
             ><el-option label="会员卡" :value="2"> </el-option>
           </el-select> </el-form-item
-        ><el-form-item label="产品名称:" prop="c">
+        ><el-form-item label="商品分类:" prop="">
+          <el-select
+            clearable
+            v-model="formData.classification"
+            placeholder="请选择商品分类"
+          >
+            <el-option
+              v-for="(item, index) in classificationList"
+              :key="index"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select> </el-form-item
+        ><el-form-item label="商品名称:" prop="c">
           <el-input
             clearable
             v-model="formData.c"
-            placeholder="输入产品名称"
+            placeholder="输入品名称"
           ></el-input> </el-form-item
-        ><el-form-item label="产品主图:" prop="urls">
+        ><el-form-item label="品主图:" prop="urls">
           <ul class="imgList">
             <li
               class="imgLi"
               v-for="(item, index) in formData.urls"
               :key="index"
             >
+              <i class="el-icon-error del" @click="formData.urls.splice(index,1)"></i>
               <el-image
                 style="width: 90px; height: 90px"
-                :src="item"
-                :preview-src-list="formData.urls"
+                :src="$methodsTools.splitImgHost(item)"
+                :preview-src-list="
+                  formData.urls.map((i) => $methodsTools.splitImgHost(i))
+                "
                 :initial-index="index"
               >
               </el-image>
             </li>
             <li class="imgactive">
-              <i class="el-icon-plus" @click="uploadImg"></i>
+              <label for="file1" style="width: 100%; height: 100%">
+                <i class="el-icon-plus" @click="uploadImg"></i
+              ></label>
             </li>
-            <label for="file1"> </label>
-            <input type="file" v-show="false" id="file1" />
+            <input type="file" v-show="false" id="file1" @change="uploadImg" />
             <div style="clear: both"></div>
           </ul>
           <p style="color: #a4a4a4; margin: 0">
@@ -68,11 +86,11 @@
             placeholder="输入兑换积分"
             :min="0"
             :precision="0" /></el-form-item
-        ><el-form-item label="品原价:" prop="f">
+        ><el-form-item label="品原价:" prop="f">
           <el-input-number
             :controls="false"
             v-model="formData.f"
-            placeholder="输入品原价"
+            placeholder="输入品原价"
             :min="0"
             :precision="2"
           /> </el-form-item
@@ -85,7 +103,7 @@
             :precision="2"
           />
         </el-form-item>
-        <el-form-item label="品详情:">
+        <el-form-item label="品详情:">
           <editor
             v-model="formData.html"
             :min-height="300"
@@ -117,6 +135,16 @@ export default {
   },
   data() {
     return {
+      classificationList: [
+        {
+          label: "技术类",
+          value: 1,
+        },
+        {
+          label: "理疗类",
+          value: 2,
+        },
+      ],
       formData: {
         accountList: [{}],
         invoiceBo: {},
@@ -132,7 +160,27 @@ export default {
     };
   },
   methods: {
-    uploadImg() {},
+    uploadImg(e) {
+      var self = this;
+      var file = e.target.files[0];
+      if (file.size > 0.2 * 1024 * 1024) {
+        self.$message.error("图片不得大于200kb");
+        return;
+      }
+      var type = e.target.value.toLowerCase().split(".").splice(-1);
+      if (type[0] != "jpg" && type[0] != "png" && type[0] != "jpeg") {
+        self.$message.error("上传格式需为:.jpg/.png/.jpeg");
+        return;
+      }
+      this.$upload
+        .upload(file, 0)
+        .then((res) => {
+          self.formData.urls.push(res);
+        })
+        .finally(() => {
+          e.target.value = "";
+        });
+    },
     init() {
       this.formData = JSON.parse(JSON.stringify(this.activeData));
     },
@@ -183,6 +231,7 @@ export default {
     align-items: center;
     justify-content: center;
     transition: all 0.3s;
+    position: relative;
   }
   .imgLi {
     border: 1px solid #666;
@@ -193,6 +242,12 @@ export default {
   }
   .imgactive {
     border: 1px dotted #666;
+    label {
+      cursor: pointer;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+    }
     i {
       font-size: 20px;
     }
@@ -209,4 +264,15 @@ export default {
   width: 220px;
   margin-right: 10px;
 }
+.del{
+  color: red;
+  position: absolute;
+  top: 0;
+  right: 0;
+  font-size: 20px;
+  z-index: 2;
+  background-color: #fff;
+  border-radius: 50%;
+  overflow: hidden;
+}
 </style>

+ 10 - 8
src/views/integralManagement/giftGoods/index.vue

@@ -29,8 +29,10 @@
       <template slot="images" slot-scope="props">
         <el-image
           style="width: 100px; height: 70px"
-          :src="props.scope.row.urls[0]"
-          :preview-src-list="props.scope.row.urls"
+          :src="$methodsTools.splitImgHost(props.scope.row.urls[0])"
+          :preview-src-list="
+            props.scope.row.urls.map((i) => $methodsTools.splitImgHost(i))
+          "
         >
         </el-image>
       </template>
@@ -114,7 +116,7 @@ export default {
         },
         {
           prop: "c",
-          placeholder: "请输入品名称",
+          placeholder: "请输入品名称",
         },
       ],
       formData: { a: "", b: "", c: "" },
@@ -132,12 +134,12 @@ export default {
           soltName: "about",
         },
         {
-          label: "品名称",
+          label: "品名称",
           prop: "c",
           hidden: true,
         },
         {
-          label: "品主图",
+          label: "品主图",
           prop: "urls",
           hidden: true,
           scope: "solt",
@@ -149,7 +151,7 @@ export default {
           hidden: true,
         },
         {
-          label: "品原价",
+          label: "品原价",
           prop: "f",
           hidden: true,
         },
@@ -199,8 +201,8 @@ export default {
           b: [1, 2],
           c: "鹿卡通",
           urls: [
-            "https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg",
-            "https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg",
+            "oss/images/avatar/20230518/1684381305489/1684381305490_1510435823",
+            "oss/images/avatar/20230518/1684381305489/1684381305490_1510435823",
           ],
           e: 1520,
           f: 1520,

+ 78 - 34
src/views/integralManagement/merchantManageMent/dislog.vue

@@ -3,7 +3,7 @@
     <BaseDialog
       width="580px"
       :isShow.sync="isShow"
-      :title="activeData.id ? '编辑商户' : '添加商户'"
+      :title="storeId ? '编辑商户' : '添加商户'"
       @submit="submitForm"
       @close="close"
     >
@@ -14,45 +14,46 @@
         label-width="100px"
         class="demo-ruleForm"
       >
-        <el-form-item label="合作商户:" prop="a">
+        <el-form-item label="合作商户:" prop="storeName">
           <el-input
             clearable
-            v-model="formData.a"
+            v-model="formData.storeName"
             placeholder="请输入合作商户"
           ></el-input>
         </el-form-item>
-        <el-form-item label="联系人:" prop="">
+        <el-form-item label="联系人:" prop="contacts">
           <el-input
             clearable
-            v-model="formData.a"
-            placeholder="请输入合作商户"
+            v-model="formData.contacts"
+            placeholder="请输入联系人"
           ></el-input>
         </el-form-item>
-        <el-form-item label="手机号码:" prop="">
+        <el-form-item label="手机号码:" prop="telphone">
           <el-input
             clearable
-            v-model="formData.a"
-            placeholder="请输入合作商户"
+            v-model="formData.telphone"
+            placeholder="请输入手机号码"
           ></el-input>
         </el-form-item>
-        <el-form-item label="用户名:" prop="">
+        <el-form-item label="用户名:">
           <el-input
+            disabled
             clearable
-            v-model="formData.a"
-            placeholder="请输入合作商户"
+            v-model="formData.storeAccount"
+            placeholder="请输入用户名"
           ></el-input>
         </el-form-item>
-        <el-form-item label="密码:" prop="">
+        <el-form-item label="密码:" v-if="storeId === 0">
           <el-input
+            disabled
             clearable
-            v-model="formData.a"
-            placeholder="请输入合作商户"
-          ></el-input
-          ><el-button>密码恢复</el-button>
+            v-model="formData.initPwd"
+            placeholder="请输入密码"
+          ></el-input>
         </el-form-item>
       </el-form>
       <template slot="slotBtn">
-        <el-button type="success">启用</el-button>
+        <el-button type="success" @click="submitForm(true)">启用</el-button>
       </template>
     </BaseDialog>
   </div>
@@ -66,41 +67,84 @@ export default {
       type: Boolean,
       default: false,
     },
-    activeData: {
-      type: Object,
-      default: () => {
-        return {};
-      },
+    storeId: {
+      type: Number,
+      default: 0,
     },
   },
   data() {
+    var checkTel = (rule, value, callback) => {
+      var reg = /^1(3|4|5|6|7|8|9)\d{9}$/;
+      if (!value) {
+        return callback(new Error("请输入手机号码"));
+      } else if (!reg.test(value)) {
+        return callback(new Error("请输入正确手机号码"));
+      } else {
+        if (this.storeId === 0) {
+          this.$set(
+            this.formData,
+            "initPwd",
+            value.substr(value.length - 6, value.length)
+          );
+        }
+        callback();
+      }
+    };
     return {
-      formData: {},
+      formData: {
+        storeName: "",
+        contacts: "",
+        telphone: "",
+        storeAccount: "",
+        initPwd: "",
+      },
       rules: {
-        tenantName: [
-          { required: true, message: "请输入机构名称", trigger: "blur" },
+        storeName: [
+          { required: true, message: "请输入合作商户", trigger: "blur" },
+        ],
+        contacts: [
+          { required: true, message: "请输入联系人", trigger: "blur" },
         ],
-        billType: [
-          { required: true, message: "请选择账期类型", trigger: "change" },
+        storeAccount: [
+          { required: false, message: "请输入用户名", trigger: "blur" },
         ],
+        initPwd: [{ required: false, message: "请输入密码", trigger: "blur" }],
+        telphone: [{ required: true, validator: checkTel, trigger: "blur" }],
       },
     };
   },
-  mounted() {},
 
   methods: {
     init() {
-      this.formData = JSON.parse(JSON.stringify(this.activeData));
+      if (this.storeId) {
+        this.$api.mallstoredata(this.storeId).then((res) => {
+          this.formData = res.data;
+          this.formData.storeAccount = res.data.userName;
+        });
+      } else {
+        this.formData = {
+          storeName: "",
+          contacts: "",
+          telphone: "",
+          storeAccount: "manager",
+          initPwd: "",
+        };
+      }
     },
     close() {
       this.$refs["formData"].resetFields();
     },
-    submitForm() {
+    submitForm(status) {
       this.$refs["formData"].validate((valid) => {
         if (valid) {
-          this.$message.success("成功");
-          this.isShow = false;
-          this.$emit("search");
+          this.$api[this.storeId ? "editmallstore" : "addmallstore"]({
+            status: status ? 1 : 0,
+            ...this.formData,
+          }).then((res) => {
+            this.$message.success("成功");
+            this.isShow = false;
+            this.$emit("search");
+          });
         } else {
           return false;
         }

+ 59 - 47
src/views/integralManagement/merchantManageMent/index.vue

@@ -47,7 +47,7 @@
     <dislog
       :dialogVisible.sync="dialogVisible"
       @search="search"
-      :activeData="activeData"
+      :storeId="storeId"
     ></dislog>
   </div>
 </template>
@@ -74,7 +74,7 @@ export default {
       },
       formList: [
         {
-          prop: "tenantid",
+          prop: "storeName",
           placeholder: "输入合作商户",
         },
       ],
@@ -82,19 +82,19 @@ export default {
       tableSet: [
         {
           label: "合作商户",
-          prop: "a",
+          prop: "storeName",
           hidden: true,
         },
         {
           label: "启用状态",
-          prop: "b",
+          prop: "status",
           hidden: true,
           scope: "solt",
           soltName: "status",
         },
         {
           label: "录入时间",
-          prop: "c",
+          prop: "createTime",
           hidden: true,
           scope: "aTimeList",
         },
@@ -102,7 +102,7 @@ export default {
       tableData: [],
       total: 0,
       dialogVisible: false,
-      activeData: {},
+      storeId: 0,
     };
   },
   created() {
@@ -110,67 +110,79 @@ export default {
   },
   methods: {
     addClick(data) {
-      this.activeData = data || {};
+      this.storeId = data?.storeId || 0;
       this.dialogVisible = true;
     },
     search(v) {
-      this.tableData = [
-        {
-          id: 1,
-          a: "深圳桥恩心理咨询有限公司",
-          b: 1,
-          c: 1234567891,
-        },
-      ];
-      //   this.loading = true;
-      //   if (v === 2) {
-      //     this.formData = {
-      //       pageSize: 10,
-      //       pageNum: 1,
-      //     };
-      //   }
-      //   this.$api
-      //     .xxx(this.formData)
-      //     .then((res) => {
-      //       this.tableData = res.rows;
-      //       this.total = res.total;
-      //       this.navText.index = res.total;
-      //     })
-      //     .finally(() => {
-      //       this.loading = false;
-      //     });
+      this.loading = true;
+      if (v === 2) {
+        this.formData = {
+          pageSize: 10,
+          pageNum: 1,
+          status: "0,1",
+        };
+      }
+      this.$api
+        .mallstorelist(this.formData)
+        .then((res) => {
+          this.tableData = res.rows;
+          this.total = res.total;
+          this.navText.index = res.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
     },
     statusChange(e, row) {
-      if (true) {
-        row.status = 1;
-      }
+      this.$api
+        .editmallstore({ storeId: row.storeId, status: e })
+        .then((res) => {
+          this.$message.success("操作成功");
+          row.status = e;
+        })
+        .catch(() => {
+          return (row.status = e ? 0 : 1);
+        });
     },
     init() {
       this.search(2);
     },
     //密码恢复
     restore(row) {
-      this.$alert("确定恢复为初始密码吗?", "提示", {
-        dangerouslyUseHTMLString: true,
+      this.$confirm("确定恢复为初始密码吗?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
       })
-        .then(() => {})
+        .then(() => {
+          this.$api
+            .mallstorerestorePwd({ storeId: row.storeId })
+            .then((res) => {
+              this.$message.success("操作成功");
+              this.search();
+            });
+        })
         .catch(() => {});
     },
     del(v) {
-      this.$alert(
+      this.$confirm(
         "确定删除此内容?<br />内容删除后将无法恢复,请慎重考虑",
         "提示",
         {
-          dangerouslyUseHTMLString: true,
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
         }
       )
-        .then(() => {})
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: "已取消删除",
-          });
-        });
+        .then(() => {
+          this.$api
+            .editmallstore({ storeId: row.storeId, status: -1 })
+            .then((res) => {
+              this.$message.success("删除成功");
+              this.search();
+            });
+        })
+        .catch(() => {});
     },
   },
 };