Просмотр исходного кода

1、新增开票界面开票方选择天勤,开票科目自动带出*经纪代理服务*保险代理手续费。
2、发票类型选择专票,自动带出税率6%。
3、开票日期不选择的话默认当天。
4、新增开票的小对话框可以移动。

lihongxiao 2 лет назад
Родитель
Сommit
5adf69ad7d

+ 2 - 0
src/main.js

@@ -11,6 +11,7 @@ import VueSplit from 'vue-split-panel'
 import VueDirectiveWindow from 'vue-directive-window';
 import {dateFormat} from '@/utils/dataformat.js'
 import btnPermission from '@/utils/btnPermission'
+import dialogDrag from '@/utils/dialogDrag'
 import VueClipboard from 'vue-clipboard2'
 
 import 'element-ui/lib/theme-chalk/index.css'
@@ -43,6 +44,7 @@ Vue.use(api)
 Vue.use(router)
 Vue.use(dateFormat)//日期组件格式化
 Vue.use(btnPermission)
+Vue.use(dialogDrag)
 Vue.prototype.global = global
 
 new Vue({

+ 79 - 0
src/utils/dialogDrag.js

@@ -0,0 +1,79 @@
+const dialogDrag = {
+    bind(el) {
+      const dialogHeaderEl = el.querySelector('.el-dialog__header');
+      const dragDom = el.querySelector('.el-dialog');
+      // dialogHeaderEl.style.cursor = 'move';
+      dialogHeaderEl.style.cssText += ';cursor:move;';
+      dragDom.style.cssText += ';top:0px;';
+  
+      // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
+      const sty = (function () {
+        if (window.document.currentStyle) {
+          return (dom, attr) => dom.currentStyle[attr];
+        } else {
+          return (dom, attr) => getComputedStyle(dom, false)[attr];
+        }
+      })();
+      dialogHeaderEl.onmousedown = (e) => {
+        // 鼠标按下,计算当前元素距离可视区的距离
+        const disX = e.clientX - dialogHeaderEl.offsetLeft;
+        const disY = e.clientY - dialogHeaderEl.offsetTop;
+        const screenWidth = document.body.clientWidth; // body当前宽度
+        const screenHeight = document.documentElement.clientHeight; // 可见区域高度(应为body高度,可某些环境下无法获取)
+        const dragDomWidth = dragDom.offsetWidth; // 对话框宽度
+        const dragDomheight = dragDom.offsetHeight; // 对话框高度
+        const minDragDomLeft = dragDom.offsetLeft;
+        const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth;
+        const minDragDomTop = dragDom.offsetTop;
+        const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomheight;
+        // 获取到的值带px 正则匹配替换
+        let styL = sty(dragDom, 'left');
+        let styT = sty(dragDom, 'top');
+        // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
+        if (styL.includes('%')) {
+          // eslint-disable-next-line no-useless-escape
+          styL = +document.body.clientWidth * (+styL.replace(/\%/g, '') / 100);
+          // eslint-disable-next-line no-useless-escape
+          styT = +document.body.clientHeight * (+styT.replace(/\%/g, '') / 100);
+        } else {
+          styL = +styL.replace(/\px/g, '');
+          styT = +styT.replace(/\px/g, '');
+        }
+  
+        document.onmousemove = (e) => {
+          // 通过事件委托,计算移动的距离
+          let left = e.clientX - disX;
+          let top = e.clientY - disY;
+  
+          // 边界处理
+          if (-left > minDragDomLeft) {
+            left = -minDragDomLeft;
+          } else if (left > maxDragDomLeft) {
+            left = maxDragDomLeft;
+          }
+          if (-top > minDragDomTop) {
+            top = -minDragDomTop;
+          } else if (top > maxDragDomTop) {
+            top = maxDragDomTop;
+          }
+  
+          // 移动当前元素
+          dragDom.style.cssText += `;left:${left + styL}px;top:${
+            top + styT
+          }px;transform:translateX(0)`;
+        };
+  
+        document.onmouseup = () => {
+          document.onmousemove = null;
+          document.onmouseup = null;
+        };
+        return false;
+      };
+    },
+  };
+  
+  export default {
+    install(app) {
+      app.directive('dialogDrag', dialogDrag);
+    },
+  };

+ 21 - 0
src/views/FinancialManagement/ExpenseManagement/PaymentManagement.vue

@@ -138,6 +138,7 @@
       :before-close="resetForm"
       :visible.sync="detailDialog"
       width="60%"
+      v-dialogDrag
     >
       <div class="dialog-body">
         <el-form
@@ -233,6 +234,8 @@
                     v-model="formData.invoiceType"
                     placeholder="请选择发票类型"
                     clearable
+                    @change="invoiceTypeChange"
+
                   >
                     <el-option
                       v-for="item in invoice_typeData"
@@ -911,8 +914,25 @@ export default {
         })
         .catch(() => {});
     },
+    invoiceTypeChange(item){
+      if(item==2){
+        this.formData.rate='6'
+      }
+      else{
+        this.formData.rate=''
+      }
+
+    },
     //选择开票方change事件
     companyChange(item) {
+      if(item.accountName=="太原天勤保险代理有限公司"){
+        this.formData.invoiceSubjects1 ='经纪代理服务' 
+        this.formData.invoiceSubjects2 ='保险代理手续费' 
+      }
+      else{
+        this.formData.invoiceSubjects1 ='' 
+        this.formData.invoiceSubjects2 ='' 
+      }
       this.formData.revBankCardNum = item.bankCardNum;
       this.formData.biller = item.biller;
       this.formData.accountId = item.accountId;
@@ -968,6 +988,7 @@ export default {
     //新增开票
     addPayment() {
       this.title = "开票新增";
+     this.formData.invoiceTime= new Date()
       this.detailDialog = true;
     },
     //新增编辑开票信息