Browse Source

add:发票

Tang 3 years ago
parent
commit
519bdaa8fd

+ 6 - 19
src/views/Marketing/goods/commodityManageMent/add/index.vue

@@ -126,11 +126,12 @@
                   : 'classHours'
               "
             >
-              <el-input
-                class="numInputs"
-                type="age"
-                v-model.number="listData.classHours"
-              ></el-input>
+              <el-input-number
+                v-model="listData.classHours"
+                :min="0"
+                :precision="2"
+                :controls="false"
+              ></el-input-number>
             </el-form-item>
             <!-- <el-form-item
               label="科目/类目"
@@ -1628,20 +1629,6 @@ export default {
         ],
         classHours: [
           { required: true, message: "请输入学时", trigger: "blur" },
-          {
-            validator(rule, value, callback) {
-              if (
-                Number.isInteger(Number(value)) &&
-                Number(value) >= 0 &&
-                Number(value) < 9999999
-              ) {
-                callback();
-              } else {
-                callback(new Error("请输入正整数"));
-              }
-            },
-            trigger: "blur",
-          },
         ],
       },
       rulesMors: {

+ 6 - 19
src/views/Marketing/goods/commodityManageMent/edit/index.vue

@@ -129,11 +129,12 @@
                   : 'classHours'
               "
             >
-              <el-input
-                class="numInputs"
-                type="age"
-                v-model.number="listData.classHours"
-              ></el-input>
+              <el-input-number
+                v-model="listData.classHours"
+                :min="0"
+                :precision="2"
+                :controls="false"
+              ></el-input-number>
             </el-form-item>
             <!-- <el-form-item
               label="科目/类目"
@@ -1646,20 +1647,6 @@ export default {
         ],
         classHours: [
           { required: true, message: "请输入学时", trigger: "blur" },
-          {
-            validator(rule, value, callback) {
-              if (
-                Number.isInteger(Number(value)) &&
-                Number(value) >= 0 &&
-                Number(value) < 9999999
-              ) {
-                callback();
-              } else {
-                callback(new Error("请输入正整数"));
-              }
-            },
-            trigger: "blur",
-          },
         ],
       },
       rulesMors: {

+ 1 - 0
src/views/Marketing/goods/commodityManageMent/index.vue

@@ -89,6 +89,7 @@ export default {
           prop: "status",
           placeholder: "商品状态",
           scope: "select",
+          noClear:false,
           options: [
             {
               label: "全部状态",

+ 807 - 0
src/views/Marketing/order/bill/index.vue

@@ -0,0 +1,807 @@
+<template>
+  <div id="bill">
+    <search-box-new
+      ref="searchBox"
+      :formData="formData"
+      :formList="formList"
+      @search="search"
+      @init="init"
+    />
+    <table-list
+      :tableSets="tableSet"
+      :tableData="tableData"
+      :navText="navText"
+      @addClick="addClick"
+      :loading="loading"
+    >
+      <template slot="btn" slot-scope="props">
+        <el-button type="text" @click="addClick(props.scope.row, 1)"
+          >详情</el-button
+        >
+        <el-button type="text" @click="addClick(props.scope.row, 2)"
+          >审核</el-button
+        >
+        <el-button type="text" @click="addClick(props.scope.row, 3)"
+          >上传发票</el-button
+        >
+        <el-button type="text" @click="addClick(props.scope.row, 4)"
+          >邮寄发票</el-button
+        >
+        <el-button type="text" @click="addClick(props.scope.row, 5)"
+          >发票标记</el-button
+        >
+      </template>
+    </table-list>
+    <pagination
+      :total="total"
+      :pageSize="formData.pageSize"
+      :currentPage="formData.pageNum"
+      @handleSizeChange="handleSizeChange"
+      @handleCurrentChange="handleCurrentChange"
+    />
+    <el-dialog
+      :visible.sync="auditStatus"
+      width="460px"
+      :show-close="false"
+      :close-on-click-modal="false"
+    >
+      <div slot="title" class="hearders">
+        <div class="leftTitle">发票申请审核结果</div>
+        <div class="rightBoxs">
+          <img
+            src="@/assets/images/Close@2x.png"
+            alt=""
+            @click="auditStatus = false"
+          />
+        </div>
+      </div>
+      <div>
+        <ul class="ulSty">
+          <li
+            v-for="(item, index) in auditList"
+            :key="index"
+            style="margin-bottom: 6px; font-size: 12px"
+          >
+            {{ item.label }}:xxx
+          </li>
+        </ul>
+        <el-form :model="auditData" ref="auditData" label-width="100px">
+          <el-form-item
+            label="审核结果"
+            prop="radio"
+            :rules="[
+              { required: true, message: '请选择审核结果', trigger: 'change' },
+            ]"
+          >
+            <el-radio-group v-model="auditData.radio">
+              <el-radio :label="1">待审核</el-radio>
+              <el-radio :label="2">通过</el-radio>
+              <el-radio :label="3">驳回</el-radio>
+            </el-radio-group>
+          </el-form-item>
+          <el-form-item label="审核反馈">
+            <el-input type="textarea" v-model="auditData.desc"></el-input>
+          </el-form-item>
+        </el-form>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="auditStatus = false">取 消</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog
+      :visible.sync="billSendStatus"
+      width="530px"
+      :show-close="false"
+      :close-on-click-modal="false"
+    >
+      <div slot="title" class="hearders">
+        <div class="leftTitle">
+          {{
+            statusPops === 1
+              ? "上传发票"
+              : statusPops === 2
+              ? "邮寄发票"
+              : "未知状态"
+          }}
+        </div>
+        <div class="rightBoxs">
+          <img
+            src="@/assets/images/Close@2x.png"
+            alt=""
+            @click="billSendStatus = false"
+          />
+        </div>
+      </div>
+      <div>
+        <el-form :model="billSendData" ref="billSendData" label-width="100px">
+          <el-form-item label="电子发票">
+            <div>
+              <label for="uplose">
+                <i
+                  class="el-button el-button--default el-button--mini"
+                  style="font-style: normal"
+                  >上传发票</i
+                >
+              </label>
+              <input
+                ref="file"
+                type="file"
+                style="display: none"
+                id="uplose"
+                @change="getImgFile"
+              />
+
+              <span
+                style="font-size: 12px; margin-left: 12px; margin-right: 10px"
+                >上传文件必须为(png/jpg/jpeg)文件</span
+              >
+              <el-button
+                v-if="billSendData.coverUrl"
+                type="danger"
+                size="mini"
+                @click="billSendData.coverUrl = ''"
+                >删除图片</el-button
+              >
+            </div>
+          </el-form-item>
+          <div v-if="billSendData.coverUrl" style="text-align: center">
+            <el-image
+              style="
+                max-width: 100%;
+                padding: 20px;
+                max-height: 400px;
+                overflow: auto;
+              "
+              :src="$methodsTools.splitImgHost(billSendData.coverUrl)"
+              :preview-src-list="[
+                $methodsTools.splitImgHost(billSendData.coverUrl),
+              ]"
+            >
+            </el-image>
+          </div>
+          <el-form-item label="发票代码">
+            <el-input size="small" v-model="billSendData.desc"></el-input>
+          </el-form-item>
+          <el-form-item label="发票号码">
+            <el-input size="small" v-model="billSendData.desc"></el-input>
+          </el-form-item>
+          <div
+            v-if="statusPops === 2"
+            style="border-top: 1px dashed #999; margin: 10px 0px"
+          ></div>
+          <div v-if="statusPops === 2">
+            <el-form-item
+              label="是否邮寄"
+              prop="radio"
+              :rules="[
+                {
+                  required: true,
+                  message: '请选择是否邮寄',
+                  trigger: 'change',
+                },
+              ]"
+            >
+              <el-radio-group v-model="billSendData.radio">
+                <el-radio :label="1">是</el-radio>
+                <el-radio :label="0">否</el-radio>
+              </el-radio-group>
+            </el-form-item>
+            <el-form-item label="快递号">
+              <el-input size="small" v-model="billSendData.desc"></el-input>
+            </el-form-item>
+          </div>
+        </el-form>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="billSendStatus = false">取 消</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog
+      :visible.sync="billStatusBox"
+      width="460px"
+      :show-close="false"
+      :close-on-click-modal="false"
+    >
+      <div slot="title" class="hearders">
+        <div class="leftTitle">发票状态标记</div>
+        <div class="rightBoxs">
+          <img
+            src="@/assets/images/Close@2x.png"
+            alt=""
+            @click="billStatusBox = false"
+          />
+        </div>
+      </div>
+      <div style="margin-top: 16px">
+        <el-form
+          :model="billStatusData"
+          ref="billStatusData"
+          label-width="100px"
+        >
+          <el-form-item
+            label="发票状态"
+            prop="radio"
+            :rules="[
+              { required: true, message: '请选择发票状态', trigger: 'change' },
+            ]"
+          >
+            <el-radio-group v-model="billStatusData.radio">
+              <el-radio :label="1">未开票</el-radio>
+              <el-radio :label="2">已开票</el-radio>
+              <el-radio :label="3">已退票</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-form>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="billStatusBox = false">取 消</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog
+      :visible.sync="detailsStatus"
+      width="860px"
+      :show-close="false"
+      :close-on-click-modal="false"
+    >
+      <div slot="title" class="hearders">
+        <div class="leftTitle">发票状态标记</div>
+        <div class="rightBoxs">
+          <img
+            src="@/assets/images/Close@2x.png"
+            alt=""
+            @click="detailsStatus = false"
+          />
+        </div>
+      </div>
+      <el-row :gutter="10">
+        <el-col :span="12" style="border-right: 1px solid #999">
+          <div class="titleSty">发票申请信息</div>
+          <ul>
+            <li
+              v-for="(item, index) in auditList"
+              :key="index"
+              style="margin-bottom: 6px; font-size: 12px"
+            >
+              {{ item.label }}:xxx
+            </li>
+          </ul>
+        </el-col>
+        <el-col :span="12" style="padding-left: 15px">
+          <div class="titleSty">发票申请结果和记录</div>
+          <ul>
+            <li
+              v-for="(item, index) in billList"
+              :key="index"
+              style="margin-bottom: 6px; font-size: 12px"
+            >
+              {{ item.label }}:xxx
+            </li>
+          </ul>
+        </el-col>
+      </el-row>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="detailsStatus = false">取 消</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import searchBoxNew from "@/components/searchBoxNew";
+import tableList from "@/components/tableList";
+import pagination from "@/components/pagination";
+export default {
+  name: "Bill",
+  components: { searchBoxNew, tableList, pagination },
+  data() {
+    return {
+      loading: false, //当前表单加载是否加载动画
+      navText: {
+        title: "发票申请列表",
+        index: 0,
+        ch: "条",
+        num: false,
+        border: true,
+        choice: true,
+        addHide: false,
+        changeWidth: "300px",
+        backFatherBtn: {
+          status: false,
+          title: "未定义",
+        },
+      },
+      //搜索
+      formList: [
+        {
+          prop: "goodsStatus",
+          placeholder: "发票类型",
+          scope: "select",
+          options: [
+            {
+              label: "普通发票",
+              value: 1,
+            },
+            {
+              label: "增值税发票",
+              value: 0,
+            },
+          ],
+        },
+        {
+          prop: "goodsStatus",
+          placeholder: "审核状态",
+          scope: "select",
+          options: [
+            {
+              label: "待审核",
+              value: 1,
+            },
+            {
+              label: "驳回",
+              value: 0,
+            },
+            {
+              label: "通过",
+              value: 3,
+            },
+          ],
+        },
+        {
+          prop: "goodsStatus",
+          placeholder: "发票状态",
+          scope: "select",
+          options: [
+            {
+              label: "未开票",
+              value: 0,
+            },
+            {
+              label: "已开票",
+              value: 1,
+            },
+            {
+              label: "无效票",
+              value: 2,
+            },
+            {
+              label: "已退票",
+              value: 3,
+            },
+          ],
+        },
+        {
+          prop: "goodsStatus",
+          placeholder: "申请主体",
+          scope: "select",
+          options: [
+            {
+              label: "个人",
+              value: 1,
+            },
+            {
+              label: "企业",
+              value: 0,
+            },
+          ],
+        },
+        {
+          prop1: "validityStartTime",
+          prop2: "validityEndTime",
+          placeholder1: "开始时间",
+          placeholder2: "结束时间",
+          scope: "moreDataPicker",
+        },
+        {
+          prop: "goodsName",
+          placeholder: "请输入发票代码/发票号码",
+        },
+      ],
+      formData: {
+        pageSize: 10,
+        pageNum: 1,
+      },
+      // 表单
+      tableSet: [
+        {
+          label: "发票类型",
+          prop: "code",
+          hidden: true,
+        },
+        {
+          label: "审核状态",
+          prop: "categoryName",
+          hidden: true,
+        },
+        {
+          label: "发票状态",
+          prop: "schoolName",
+          hidden: true,
+        },
+        {
+          label: "发票代码/发票号码",
+          prop: "educationName",
+          hidden: true,
+        },
+        {
+          label: "学员信息",
+          prop: "classHours",
+          hidden: true,
+        },
+        {
+          label: "申请主体",
+          prop: "educationName",
+          hidden: true,
+        },
+        {
+          label: "发票抬头",
+          prop: "classHours",
+          hidden: true,
+        },
+        {
+          label: "纳税登记号",
+          prop: "classHours",
+          hidden: true,
+        },
+        {
+          label: "订单信息",
+          prop: "classHours",
+          hidden: true,
+        },
+        {
+          label: "开票金额(人民币)",
+          prop: "classHours",
+          hidden: true,
+        },
+        {
+          label: "是否上传发票",
+          prop: "classHours",
+          hidden: true,
+        },
+        {
+          label: "是否邮寄发票(快递号)",
+          prop: "classHours",
+          hidden: true,
+        },
+        {
+          label: "申请时间",
+          prop: "createTime",
+          hidden: true,
+          scope: "aTimeList",
+        },
+        {
+          label: "开票时间",
+          prop: "createTime",
+          hidden: true,
+          scope: "aTimeList",
+        },
+      ],
+      tableData: [{}], //表单数据
+      total: 0, //一共多少条
+      detailsStatus: false, //详情窗口
+      auditStatus: false, //审核窗口
+      auditList: [
+        {
+          label: "申请时间",
+          prop: "",
+        },
+        {
+          label: "发票类型",
+          prop: "",
+        },
+        {
+          label: "申请主体",
+          prop: "",
+        },
+        {
+          label: "发票抬头",
+          prop: "",
+        },
+        {
+          label: "单位地址",
+          prop: "",
+        },
+        {
+          label: "电话号码",
+          prop: "",
+        },
+        {
+          label: "开户银行",
+          prop: "",
+        },
+        {
+          label: "银行账号",
+          prop: "",
+        },
+        {
+          label: "收件地址",
+          prop: "",
+        },
+        {
+          label: "收件人",
+          prop: "",
+        },
+        {
+          label: "收件手机",
+          prop: "",
+        },
+        {
+          label: "开票订单",
+          prop: "",
+        },
+        {
+          label: "本次申请开票全额(人民币)",
+          prop: "",
+        },
+      ], //审核字段
+      auditData: {},
+      billSendStatus: false, //上传发票邮寄发票
+      billSendData: {
+        coverUrl: "",
+      }, //发票数据
+      billStatusBox: false, //发票标识
+      billStatusData: {}, //发票标识数据
+      statusPops: "", //1上传发票2邮寄发票
+      billStatus: "", //发票状态
+      billList: [
+        { label: "审核时间", prop: "" },
+        { label: "审核结果", prop: "" },
+        { label: "审核反馈", prop: "" },
+        { label: "发票状态", prop: "" },
+        { label: "发票预览", prop: "" },
+        { label: "机构发票邮寄状态", prop: "" },
+        { label: "快递号", prop: "" },
+      ],
+    };
+  },
+  mounted() {
+    this.search();
+  },
+  activated() {
+    this.search();
+  },
+  methods: {
+    search(int) {
+      //   this.loading = true;
+      if (int === 1) {
+        this.formData.pageNum = 1;
+      }
+      if (int === 2) {
+        this.formData = {
+          pageSize: 10,
+          pageNum: 1,
+        };
+      }
+      if (int === 3) {
+        this.formData.pageNum = 1;
+      }
+      var data = JSON.parse(JSON.stringify(this.formData));
+      if (this.formData.validityStartTime) {
+        data.validityStartTime = data.validityStartTime / 1000;
+      }
+      if (this.formData.validityEndTime) {
+        data.validityEndTime = data.validityEndTime / 1000;
+      }
+      console.log(data);
+      //   this.$api
+      //     .inquireGoods(data)
+      //     .then((res) => {
+      //       this.tableData = res.rows;
+      //       this.total = res.total;
+      //       this.navText.index = res.total;
+      //     })
+      //     .finally(() => {
+      //       this.loading = false;
+      //     });
+    },
+    init() {
+      this.search(2);
+    },
+    del(v) {
+      return;
+      this.$api.gradecheckGoodsChange({ goodsId: v.goodsId }).then((res) => {
+        if (res.data > 0) {
+          this.$message.error("已有学员正在学习该商品,无法删除");
+          return;
+        } else {
+          this.$alert(
+            "确定删除此内容?<br />内容删除后将无法恢复,请慎重考虑",
+            "提示",
+            {
+              dangerouslyUseHTMLString: true,
+            }
+          )
+            .then(() => {
+              var data = {
+                goodsId: v.goodsId,
+                status: -1,
+              };
+              this.$api.editGoods(data).then((res) => {
+                this.$message.success("删除成功");
+                this.search();
+              });
+            })
+            .catch(() => {
+              this.$message({
+                type: "info",
+                message: "已取消删除",
+              });
+            });
+        }
+      });
+    },
+    /**
+     *
+     * @param {Object} v 点击的数据
+     * @param {Number} int 1详情2审核3上传发票4邮寄发票5发票标识
+     */
+    addClick(v, int) {
+      switch (int) {
+        case 1:
+          /**
+           * 调用API 成功则打开 失败提示
+           */
+          this.detailsStatus = true;
+          break;
+        case 2:
+          this.auditStatus = true;
+          break;
+        case 3:
+          this.statusPops = 1; //1上传发票2邮寄发票
+          this.billSendStatus = true;
+          break;
+        case 4:
+          this.statusPops = 2; //1上传发票2邮寄发票
+          this.billSendStatus = true;
+          break;
+        case 5:
+          this.billStatus = "";
+          this.billStatusBox = true;
+          break;
+
+        default:
+          break;
+      }
+    },
+    getImgFile() {
+      var self = this;
+      var file = self.$refs.file.files[0];
+      if (file === undefined) {
+        self.$set(self.billSendData, "coverUrl", "");
+        return;
+      }
+      if (file.size > 0.3 * 1024 * 1024) {
+        self.$message.error("图片不得大于300kb");
+        return;
+      }
+      var type = self.$refs.file.value.toLowerCase().split(".").splice(-1);
+      if (type[0] != "jpg" && type[0] != "png" && type[0] != "jpeg") {
+        self.$message.error("上传格式需为:.jpg/.png/.jpeg");
+        self.$refs.file.value = "";
+        return;
+      }
+      this.$upload
+        .upload(file, 5)
+        .then((res) => {
+          self.billSendData.coverUrl = res;
+        })
+        .finally(() => {
+          self.$refs.file.value = "";
+        });
+    },
+    handleSizeChange(v) {
+      this.formData.pageSize = v;
+      this.formData.pageNum = 1;
+      this.search();
+    },
+    handleCurrentChange(v) {
+      this.formData.pageNum = v;
+      this.search();
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.titleSty {
+  display: inline-block;
+  padding: 4px 6px;
+  background-color: #eee;
+}
+.ulSty {
+  background-color: #eee;
+  padding: 5px 10px;
+}
+/deep/.el-button {
+  border-radius: 8px;
+}
+/deep/.el-dialog {
+  border-radius: 8px;
+  .el-dialog__header {
+    padding: 0;
+    .hearders {
+      height: 40px;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding: 0px 18px 0px 20px;
+      border-bottom: 1px solid #e2e2e2;
+      .leftTitle {
+        font-size: 14px;
+        font-weight: bold;
+        color: #2f4378;
+      }
+      .rightBoxs {
+        display: flex;
+        align-items: center;
+        img {
+          width: 14px;
+          height: 14px;
+          margin-left: 13px;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+  .el-dialog__body {
+    padding: 10px 20px;
+  }
+  .el-dialog__footer {
+    padding: 0;
+    .dialog-footer {
+      padding: 0px 40px;
+      height: 70px;
+      border-top: 1px solid #e2e2e2;
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+    }
+  }
+}
+.imgBox {
+  width: 100%;
+  // height: 210px;
+  border: 1px solid #e2e2e2;
+  border-radius: 8px;
+  padding: 8px 8px 3px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  .imgLabel {
+    flex: 1;
+    width: 100%;
+    border: 1px dotted #e2e2e2;
+    color: #999;
+    font-size: 14px;
+    cursor: pointer;
+    border-radius: 8px;
+    .msPhoto {
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      max-width: 100%;
+      max-height: 270px;
+      img {
+        max-width: 100%;
+        max-height: 270px;
+      }
+    }
+    .imgbbx {
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      justify-content: center;
+      width: 100%;
+      height: 100%;
+      i {
+        font-weight: bold;
+        margin: 14px 0;
+        font-size: 24px;
+      }
+    }
+  }
+  p {
+    margin: 5px 0px;
+  }
+}
+</style>
+

+ 12 - 1
src/views/resource/videoManagement/festival/edit/index.vue

@@ -476,6 +476,9 @@ export default {
     this.getDict();
   },
   methods: {
+    /**
+     * 复选框点击触发
+     */
     handleCheckedCitiesChange() {
       let nid = this.newSujectOption.map((item) => {
         return item.newId;
@@ -493,6 +496,11 @@ export default {
       }
       return arrays;
     },
+    /**
+     * 
+     * @param {Arrays} val 复选框数据
+     * @remards 复选框全选触发
+     */
     handleCheckAllChange(val) {
       if (val) {
         let nid = this.newSujectOption.map((item) => {
@@ -515,6 +523,9 @@ export default {
         this.isIndeterminate = false;
       }
     },
+    /**
+     * 自动计算直播时长
+     */
     compTimeOUT(start, end) {
       if (start && end) {
         if (end < start) {
@@ -621,7 +632,7 @@ export default {
         // });
       }
     },
-
+    
     loadPlayerzb() {
       const polyvLivePlayer = window.polyvLivePlayer;
       this.playerzb = polyvLivePlayer({