yusheng 1 жил өмнө
parent
commit
ac0552a5ce

+ 10 - 0
src/api/main/index.js

@@ -22,3 +22,13 @@ export async function getGroupUserTree(params) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+
+
+//获取系统参数
+export async function parameterGetByCode(data) {
+  const res = await request.post('/sys/parameter/getByCode', data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 220 - 268
src/views/bpm/handleTask/components/financialManage/feeManage/feeApplication/addOrEditDialog.vue

@@ -1,6 +1,5 @@
 <template>
   <div>
-
     <el-form ref="form" :rules="rules" :model="form" label-width="100px">
       <headerTitle title="基本信息"></headerTitle>
       <el-row :gutter="12">
@@ -10,8 +9,11 @@
             prop="documentType"
             style="margin-bottom: 22px"
           >
-            <dict-selection dict-name="单据类型" v-model="form.documentType"
-                            @change="handleDocumentType"></dict-selection>
+            <dict-selection
+              dict-name="单据类型"
+              v-model="form.documentType"
+              @change="handleDocumentType"
+            ></dict-selection>
           </el-form-item>
         </el-col>
         <el-col :span="8">
@@ -48,315 +50,265 @@
       </el-row>
       <el-row :gutter="12">
         <el-col :span="8">
-          <el-form-item
-            label="收款名称"
-            style="margin-bottom: 22px">
-            <el-input v-model="form.collectionName" clearable @click.native="handleSelectContact"></el-input>
+          <el-form-item label="收款名称" style="margin-bottom: 22px">
+            <el-input
+              v-model="form.collectionName"
+              clearable
+              @click.native="handleSelectContact"
+            ></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
-          <el-form-item
-            label="开户行"
-            style="margin-bottom: 22px">
+          <el-form-item label="开户行" style="margin-bottom: 22px">
             <el-input v-model="form.bankAccount" clearable></el-input>
           </el-form-item>
         </el-col>
         <el-col :span="8">
-          <el-form-item
-            label="账户"
-            style="margin-bottom: 22px">
+          <el-form-item label="账户" style="margin-bottom: 22px">
             <el-input v-model="form.bankName" clearable></el-input>
           </el-form-item>
         </el-col>
-        <!--        <el-col :span="8">-->
-        <!--          <el-form-item-->
-        <!--            label="费用类型"-->
-        <!--            prop="feeTypeId"-->
-        <!--            style="margin-bottom: 22px"-->
-        <!--          >-->
-        <!--            <ele-tree-select-->
-        <!--              clearable-->
-        <!--              filterable-->
-        <!--              ref="feeTypeTree"-->
-        <!--              :data="feeTypeList"-->
-        <!--              v-model="form.feeTypeId"-->
-        <!--              valueKey="id"-->
-        <!--              labelKey="name"-->
-        <!--              placeholder="请选择"-->
-        <!--              @change="changeFeeTypeInfo"-->
-        <!--              default-expand-all-->
-        <!--            />-->
-        <!--          </el-form-item>-->
-        <!--        </el-col>-->
-        <!--        <el-col :span="8">-->
-        <!--          <el-form-item-->
-        <!--            label="金额"-->
-        <!--            prop="amount"-->
-        <!--            style="margin-bottom: 22px">-->
-        <!--            <el-input-number v-model="form.amount" :precision="2" :controls="false" style="width: 100%"-->
-        <!--                             :min="0"></el-input-number>-->
-        <!--          </el-form-item>-->
-        <!--        </el-col>-->
       </el-row>
-      <!--        <el-col :span="12">-->
-      <!--          <el-form-item-->
-      <!--            label="会计科目"-->
-      <!--            prop="accountingSubjectId"-->
-      <!--            style="margin-bottom: 22px"-->
-      <!--          >-->
-      <!--            <ele-tree-select-->
-      <!--              clearable-->
-      <!--              filterable-->
-      <!--              ref="treeSelect"-->
-      <!--              :data="accountingSubjectList"-->
-      <!--              v-model="form.accountingSubjectId"-->
-      <!--              valueKey="id"-->
-      <!--              labelKey="name"-->
-      <!--              placeholder="请选择"-->
-      <!--              @change="changeSubjectInfo"-->
-      <!--              default-expand-all-->
-      <!--            />-->
-      <!--          </el-form-item>-->
-      <!--        </el-col>-->
 
       <el-row :gutter="12">
         <el-col :span="8">
-          <el-row style="display: flex;flex-direction: column">
+          <el-row style="display: flex; flex-direction: column">
             <el-col :span="24">
-              <el-form-item
-                label="金额"
-                style="margin-bottom: 22px">
+              <el-form-item label="金额" style="margin-bottom: 22px">
                 <el-input v-model="form.amount" disabled></el-input>
               </el-form-item>
             </el-col>
             <el-col :span="24">
               <el-form-item prop="repliedFiles" label="附件">
                 <fileMain v-model="form.files"></fileMain>
-<!--                <fileUpload-->
-<!--                  v-model="form.files"-->
-<!--                  module="main"-->
-<!--                  :showLib="false"-->
-<!--                  :limit="10"-->
-<!--                />-->
               </el-form-item>
             </el-col>
           </el-row>
         </el-col>
         <el-col :span="16">
-          <el-form-item
-            label="备注"
-            style="margin-bottom: 22px">
-            <el-input :rows="4" v-model="form.remark" type="textarea" clearable></el-input>
+          <el-form-item label="备注" style="margin-bottom: 22px">
+            <el-input
+              :rows="4"
+              v-model="form.remark"
+              type="textarea"
+              clearable
+            ></el-input>
           </el-form-item>
         </el-col>
-
       </el-row>
-
     </el-form>
     <headerTitle title="关联信息"></headerTitle>
-    <fee-related-info-table ref="feeRelatedInfoTable" @setTotalPrice="setTotalPrice" :documentType="form.documentType" v-if="form.link.length||dialogType=='add'" :link.sync="form.link"></fee-related-info-table>
+    <fee-related-info-table
+      ref="feeRelatedInfoTable"
+      @setTotalPrice="setTotalPrice"
+      :documentType="form.documentType"
+      v-if="form.link.length || dialogType == 'add'"
+      :link.sync="form.link"
+    ></fee-related-info-table>
     <!--选择客户/供应商-->
-    <customer-list-dialog v-if="customerListDialogFlag" :customerListDialogFlag.sync="customerListDialogFlag"
-                          ref="customerListDialogRef" @changeParent="getCustomerData"
+    <customer-list-dialog
+      v-if="customerListDialogFlag"
+      :customerListDialogFlag.sync="customerListDialogFlag"
+      ref="customerListDialogRef"
+      @changeParent="getCustomerData"
     ></customer-list-dialog>
   </div>
 </template>
 <script>
-import personSelect from "@/components/CommomSelect/person-select.vue";
-import {listOrganizations} from "@/api/system/organization";
-import {mapGetters} from "vuex";
-import fileUpload from "@/components/upload/fileUpload.vue";
-import {
-  feeApplyUpdateAPI,
-  getFeeApplyInfoAPI
-} from "@/api/bpm/components/financialManage/fee-manage/fee-application";
-import {getTreeByPid} from "@/api/classifyManage";
-import {getTableList} from '@/api/bpm/components/saleManage/quotation';
-import {getFile} from "@/api/system/file";
-import feeRelatedInfoTable from "@/views/bpm/handleTask/components/financialManage/components/feeRelatedInfoTable.vue";
-import customerListDialog from "@/views/bpm/handleTask/components/financialManage/components/customerListDialog.vue";
-import {contactDetail} from "@/api/bpm/components/saleManage/contact";
-import fileMain from "@/components/addDoc/index.vue";
+  import personSelect from '@/components/CommomSelect/person-select.vue';
+  import { listOrganizations } from '@/api/system/organization';
+  import { mapGetters } from 'vuex';
+  import fileUpload from '@/components/upload/fileUpload.vue';
+  import {
+    feeApplyUpdateAPI,
+    getFeeApplyInfoAPI
+  } from '@/api/bpm/components/financialManage/fee-manage/fee-application';
+  import { getTreeByPid } from '@/api/classifyManage';
+  import { getTableList } from '@/api/bpm/components/saleManage/quotation';
+  import { getFile } from '@/api/system/file';
+  import feeRelatedInfoTable from '@/views/bpm/handleTask/components/financialManage/components/feeRelatedInfoTable.vue';
+  import customerListDialog from '@/views/bpm/handleTask/components/financialManage/components/customerListDialog.vue';
+  import { contactDetail } from '@/api/bpm/components/saleManage/contact';
+  import fileMain from '@/components/addDoc/index.vue';
 
-export default {
-  name: "add-or-edit-dialog",
-  components: {
-    fileMain,
-    fileUpload,
-    personSelect,
-    feeRelatedInfoTable,
-    customerListDialog
-  },
-  computed: {
-    ...mapGetters(['user'])
-  },
-  props: {
-    businessId: {
-      default: ''
+  export default {
+    name: 'add-or-edit-dialog',
+    components: {
+      fileMain,
+      fileUpload,
+      personSelect,
+      feeRelatedInfoTable,
+      customerListDialog
     },
-    taskDefinitionKey:{
-      default: ''
+    computed: {
+      ...mapGetters(['user'])
     },
-  },
-  data() {
-    return {
-      contractListDialogFlag: false,
-      customerListDialogFlag: false,
-      dialogType: '',
-      title: '',
-      form: {
-        id: '',
-        documentType: '',
-        collectionName: '',
-        collectionId: '',
-        bankName: '',
-        bankAccount: '',
-        accountingSubjectId: '',
-        accountingSubjectCode: '',
-        accountingSubjectName: "",
-        amount: undefined,
-        applyDeptId: '',
-        applyDeptName: "",
-        applyUserId: '',
-        applyUserName: "",
-        feeTypeId: '',
-        feeTypeName: "",
-        feeTypeCode: "",
-        files: [],
-        remark: '',
-        link: [],
+    props: {
+      businessId: {
+        default: ''
       },
-      feeTypeList: [],
-      accountingSubjectList: [],
-      deptList: [],
-      deptTreeList: [],
-      rules: {
-        applyDeptId: {required: true, message: '请选择', trigger: 'change'},
-        applyUserId: {required: true, message: '请选择', trigger: 'change'},
-        // accountingSubjectId: {required: true, message: '请选择', trigger: 'change'},
-        feeTypeId: {required: true, message: '请选择', trigger: 'change'},
-        amount: {required: true, message: '请输入', trigger: 'blur'},
-        documentType: {required: true, message: '请选择', trigger: 'change'},
-      }
-    }
-  },
-  created() {
-    this.init()
-  },
-  methods: {
-    //初始化
-    async init(row = {}, type) {
-      await this.getClassifyList(25, 'feeTypeList')
-      await this.getClassifyList(24, 'accountingSubjectList')
-      await this.getDeptList()
-      await this.getFeeApplyInfoInfo(this.businessId)
-      this.$nextTick(async () => {
-        await this.getUserList(this.form.applyDeptId);
-      })
-    },
-    //获取详情
-    async getFeeApplyInfoInfo(id) {
-      this.form = await getFeeApplyInfoAPI(id)
-      this.form.documentType = this.form.documentType + ''
-    },
-    //选择供应商
-    handleSelectContact(row) {
-      if (this.form.documentType != '3') return
-      this.customerListDialogFlag = true
-      let params = {
-        id: '',
-        assetTreeId: '19',
-        classType: 2,
-        titleName: '选择供应商',
+      taskDefinitionKey: {
+        default: ''
       }
-      this.$nextTick(() => {
-        this.$refs.customerListDialogRef.init(params)
-      })
-    },
-    //获取选择 供应商/客户 数据
-    async getCustomerData(params) {
-      let {bankList} = await contactDetail(params.id)
-      this.form.bankName = bankList[0].bankName
-      this.form.collectionId = params.id
-      this.form.collectionName = params.name
-      this.form.bankAccount = bankList[0].accountNo
-      // this.setSelectData(params)
     },
-    downloadFile(file) {
-      getFile({objectName: file.storePath}, file.name);
-    },
-    //获取分类管理中的数据
-    async getClassifyList(id, listName) {
-      let res = await getTreeByPid(id)
-      this[listName] = res.data
-    },
-    //获取费用类别选中数据
-    changeFeeTypeInfo(val) {
-      if (!val) {
-        this.form.feeTypeName = ''
-        this.form.feeTypeCode = ''
-      }
-      let data = this.$refs.feeTypeTree?.$refs?.tree?.getCurrentNode() || {}
-      this.form.feeTypeName = data.name
-      this.form.feeTypeCode = data.code
+    data() {
+      return {
+        contractListDialogFlag: false,
+        customerListDialogFlag: false,
+        dialogType: '',
+        title: '',
+        form: {
+          id: '',
+          documentType: '',
+          collectionName: '',
+          collectionId: '',
+          bankName: '',
+          bankAccount: '',
+          accountingSubjectId: '',
+          accountingSubjectCode: '',
+          accountingSubjectName: '',
+          amount: undefined,
+          applyDeptId: '',
+          applyDeptName: '',
+          applyUserId: '',
+          applyUserName: '',
+          feeTypeId: '',
+          feeTypeName: '',
+          feeTypeCode: '',
+          files: [],
+          remark: '',
+          link: []
+        },
+        feeTypeList: [],
+        accountingSubjectList: [],
+        deptList: [],
+        deptTreeList: [],
+        rules: {
+          applyDeptId: { required: true, message: '请选择', trigger: 'change' },
+          applyUserId: { required: true, message: '请选择', trigger: 'change' },
+          // accountingSubjectId: {required: true, message: '请选择', trigger: 'change'},
+          feeTypeId: { required: true, message: '请选择', trigger: 'change' },
+          amount: { required: true, message: '请输入', trigger: 'blur' },
+          documentType: { required: true, message: '请选择', trigger: 'change' }
+        }
+      };
     },
-    //获取会计科目选中数据
-    changeSubjectInfo(val) {
-      if (!val) return this.form.accountingSubjectName = ''
-      let data = this.$refs.treeSelect?.$refs?.tree?.getCurrentNode() || {}
-      this.form.accountingSubjectName = data.name
+    created() {
+      this.init();
     },
-    // 获取部门数据
-    getDeptList() {
-      listOrganizations().then((list) => {
-        this.deptList = list;
-        this.deptTreeList = this.$util.toTreeData({
-          data: list,
-          idField: 'id',
-          parentIdField: 'parentId'
+    methods: {
+      //初始化
+      async init(row = {}, type) {
+        await this.getClassifyList(25, 'feeTypeList');
+        await this.getClassifyList(24, 'accountingSubjectList');
+        await this.getDeptList();
+        await this.getFeeApplyInfoInfo(this.businessId);
+        this.$nextTick(async () => {
+          await this.getUserList(this.form.applyDeptId);
+        });
+      },
+      //获取详情
+      async getFeeApplyInfoInfo(id) {
+        this.form = await getFeeApplyInfoAPI(id);
+        this.form.documentType = this.form.documentType + '';
+      },
+      //选择供应商
+      handleSelectContact(row) {
+        if (this.form.documentType != '3') return;
+        this.customerListDialogFlag = true;
+        let params = {
+          id: '',
+          assetTreeId: '19',
+          classType: 2,
+          titleName: '选择供应商'
+        };
+        this.$nextTick(() => {
+          this.$refs.customerListDialogRef.init(params);
+        });
+      },
+      //获取选择 供应商/客户 数据
+      async getCustomerData(params) {
+        let { bankList } = await contactDetail(params.id);
+        this.form.bankName = bankList[0].bankName;
+        this.form.collectionId = params.id;
+        this.form.collectionName = params.name;
+        this.form.bankAccount = bankList[0].accountNo;
+        // this.setSelectData(params)
+      },
+      downloadFile(file) {
+        getFile({ objectName: file.storePath }, file.name);
+      },
+      //获取分类管理中的数据
+      async getClassifyList(id, listName) {
+        let res = await getTreeByPid(id);
+        this[listName] = res.data;
+      },
+      //获取费用类别选中数据
+      changeFeeTypeInfo(val) {
+        if (!val) {
+          this.form.feeTypeName = '';
+          this.form.feeTypeCode = '';
+        }
+        let data = this.$refs.feeTypeTree?.$refs?.tree?.getCurrentNode() || {};
+        this.form.feeTypeName = data.name;
+        this.form.feeTypeCode = data.code;
+      },
+      //获取会计科目选中数据
+      changeSubjectInfo(val) {
+        if (!val) return (this.form.accountingSubjectName = '');
+        let data = this.$refs.treeSelect?.$refs?.tree?.getCurrentNode() || {};
+        this.form.accountingSubjectName = data.name;
+      },
+      // 获取部门数据
+      getDeptList() {
+        listOrganizations().then((list) => {
+          this.deptList = list;
+          this.deptTreeList = this.$util.toTreeData({
+            data: list,
+            idField: 'id',
+            parentIdField: 'parentId'
+          });
+        });
+      },
+      // 选择负责人部门
+      changeDeptInfo(id) {
+        const info = this.deptList.find((e) => e.id == id) || {};
+        this.form.applyDeptName = info.name;
+        this.form.applyUserId = '';
+        this.form.applyUserName = '';
+        this.getUserList(id);
+      },
+      // 获取人员数据
+      getUserList(deptId) {
+        if (deptId) {
+          this.$refs.directorRef.getList({ deptId });
+        }
+      },
+      //选择人员数据
+      changeUserInfo(val, info) {
+        this.form.applyUserName = info.name;
+      },
+      handleDocumentType(val, oldVal) {
+        this.$message.warning('单据类型发生变化,请重新选择业务类型');
+        this.$refs.feeRelatedInfoTable.clearData();
+      },
+      setTotalPrice(val) {
+        this.form.amount = val;
+      },
+      //
+      getTableValue() {
+        return new Promise((resolve) => {
+          this.$refs.form.validate(async (valid) => {
+            if (!valid) return this.$message.warning('有必填项未填,请检查');
+            this.form.link =
+              await this.$refs.feeRelatedInfoTable.getTableValidate();
+            const API = feeApplyUpdateAPI;
+            const id = await API(this.form);
+            resolve(id);
+          });
         });
-      });
-    },
-    // 选择负责人部门
-    changeDeptInfo(id) {
-      const info = this.deptList.find((e) => e.id == id) || {};
-      this.form.applyDeptName = info.name;
-      this.form.applyUserId = '';
-      this.form.applyUserName = '';
-      this.getUserList(id);
-    },
-    // 获取人员数据
-    getUserList(deptId) {
-      if (deptId) {
-        this.$refs.directorRef.getList({deptId});
       }
-    },
-    //选择人员数据
-    changeUserInfo(val, info) {
-      this.form.applyUserName = info.name;
-    },
-    handleDocumentType(val, oldVal) {
-      this.$message.warning('单据类型发生变化,请重新选择业务类型')
-      this.$refs.feeRelatedInfoTable.clearData()
-    },
-    setTotalPrice(val) {
-      this.form.amount = val
-    },
-    //
-    getTableValue() {
-      return new Promise((resolve) => {
-        this.$refs.form.validate(async valid => {
-          if (!valid) return this.$message.warning('有必填项未填,请检查')
-          this.form.link = await this.$refs.feeRelatedInfoTable.getTableValidate()
-          const API = feeApplyUpdateAPI
-          const id = await API(this.form)
-          resolve(id)
-        })
-      })
-    },
-  }
-}
+    }
+  };
 </script>
-<style scoped lang="scss">
-
-</style>
+<style scoped lang="scss"></style>

+ 25 - 19
src/views/bpm/handleTask/components/financialManage/invoiceManage/components/addOrEditDialog.vue

@@ -29,7 +29,7 @@
                 <el-option label="合同" :value="2"></el-option>
                 <el-option label="订单" :value="3"></el-option>
                 <el-option label="应收" :value="5"></el-option>
-              <el-option label="应付" :value="4"></el-option>
+                <el-option label="应付" :value="4"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -49,21 +49,15 @@
             </el-form-item>
           </el-col>
           <el-col :span="12" v-if="form.sourceType == 5">
-          <el-form-item label="应收" prop="sourceCode">
-            <el-input
-              v-model="form.sourceCode"
-              :disabled="true"
-            ></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12" v-if="form.sourceType == 4">
-          <el-form-item label="应付" prop="sourceCode">
-            <el-input
-              v-model="form.sourceCode"
-              :disabled="true"
-            ></el-input>
-          </el-form-item>
-        </el-col>
+            <el-form-item label="应收" prop="sourceCode">
+              <el-input v-model="form.sourceCode" :disabled="true"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12" v-if="form.sourceType == 4">
+            <el-form-item label="应付" prop="sourceCode">
+              <el-input v-model="form.sourceCode" :disabled="true"></el-input>
+            </el-form-item>
+          </el-col>
           <el-col :span="12">
             <el-form-item label="金额" prop="amount">
               <el-input-number
@@ -137,7 +131,13 @@
         </el-col>
 
         <el-col :span="12" :gutter="12" v-if="taskDefinitionKey != 'starter'">
-          <el-form-item prop="files" label="发票附件">
+          <el-form-item
+            prop="files"
+            label="发票附件"
+            :rules="[
+              { required: isFile==1?false:true, message: '请上传发票附件', trigger: 'blur' }
+            ]"
+          >
             <fileMain v-model="form.files"></fileMain>
           </el-form-item>
         </el-col>
@@ -264,6 +264,7 @@
     invoiceApplyUpdateAPI
   } from '@/api/bpm/components/financialManage/invoiceManage';
   import fileMain from '@/components/addDoc/index.vue';
+  import { parameterGetByCode } from '@/api/main/index.js';
 
   export default {
     name: 'add-or-edit-dialog',
@@ -324,6 +325,7 @@
           type: '',
           category: 1
         },
+        isFile: 0,
         feeTypeList: [],
         accountingSubjectList: [],
         deptList: [],
@@ -338,13 +340,17 @@
           },
           feeTypeId: { required: true, message: '请选择', trigger: 'change' },
           amount: { required: true, message: '请输入', trigger: 'blur' },
-          files: { required: true, message: '请上传', trigger: 'blur' },
           type: { required: true, message: '请选择', trigger: 'change' }
         }
       };
     },
     created() {
       this.init();
+      parameterGetByCode({
+        code: 'eos_financialManage_invoiceManage_files'
+      }).then((res) => {
+        this.isFile = res.value;
+      });
     },
     methods: {
       //初始化
@@ -413,7 +419,7 @@
           this.$refs.form.validate(async (valid) => {
             if (!valid) return this.$message.warning('有必填项未填,请检查');
             let tableData = {};
-            console.log(this.form.sourceType,'this.form.sourceType')
+            console.log(this.form.sourceType, 'this.form.sourceType');
             if (this.form.sourceType != 4 && this.form.sourceType != 5) {
               tableData = await this.$refs.table.getTableValidate();
             }

+ 1 - 1
src/views/bpm/todo/index.vue

@@ -289,7 +289,7 @@
         // return
 
         if (type == 'audit') {
-          if (Object.keys(row.formJson).length) {
+          if (row.formJson&&Object.keys(row.formJson).length) {
             console.log('处理1');
             this.formParserDialogFlag = true;
             this.$nextTick(() => {