yusheng 1 рік тому
батько
коміт
55f0209a1c

+ 2 - 0
src/BIZComponents/inventoryTable.vue

@@ -1022,6 +1022,8 @@
 
     created() {
       this.requestDict('生产类型');
+      this.requestDict('保质期单位');
+      
     },
     methods: {
       openVersion(index) {

+ 322 - 296
src/views/financialManage/invoiceManage/components/addOrEditDialog.vue

@@ -39,26 +39,30 @@
             </el-select>
           </el-form-item>
         </el-col>
-        <!--        <el-col :span="12">-->
-        <!--          <el-form-item-->
-        <!--            label="会计科目"-->
-        <!--            prop="accountingSubjectId"-->
-        <!--            -->
-        <!--          >-->
-        <!--            <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-col :span="12">
+          <el-form-item label="来源类型" prop="sourceType">
+            <el-select
+              v-model="form.sourceType"
+              @change="handleSelType"
+              :disabled="isOtherSourceFlag"
+              clearable
+              style="width: 100%"
+            >
+              <el-option label="对账单" :value="1"></el-option>
+              <el-option label="合同" :value="2"></el-option>
+              <el-option label="订单" :value="3"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12" v-if="form.sourceType == 1">
+          <el-form-item label="对账单" prop="sourceCode">
+            <el-input
+              v-model="form.sourceCode"
+              readonly
+              @click.native="handleSelectAccount"
+            ></el-input>
+          </el-form-item>
+        </el-col>
         <el-col :span="12">
           <el-form-item label="金额" prop="amount">
             <el-input-number
@@ -70,8 +74,6 @@
             ></el-input-number>
           </el-form-item>
         </el-col>
-      </el-row>
-      <el-row :gutter="12">
 
         <el-col :span="12">
           <el-form-item label="申请部门" prop="applyDeptId">
@@ -96,9 +98,7 @@
             />
           </el-form-item>
         </el-col>
-      </el-row>
 
-      <el-row :gutter="12">
         <el-col :span="12">
           <el-form-item label="预计开票日期">
             <el-date-picker
@@ -111,16 +111,6 @@
             </el-date-picker>
           </el-form-item>
         </el-col>
-        <!--        <el-col :span="12">-->
-        <!--          <el-form-item prop="repliedFiles" label="附件">-->
-        <!--            <fileUpload-->
-        <!--              v-model="form.files"-->
-        <!--              module="main"-->
-        <!--              :showLib="false"-->
-        <!--              :limit="10"-->
-        <!--            />-->
-        <!--          </el-form-item>-->
-        <!--        </el-col>-->
       </el-row>
       <headerTitle title="开票信息"></headerTitle>
       <el-row :gutter="12">
@@ -200,285 +190,321 @@
     ></table-info>
     <div slot="footer">
       <el-button type="primary" @click="handleSave(0)">保存</el-button>
-      <el-button type="primary" v-if="isNeed_process_is_close" @click="handleSave(1)">提交</el-button>
+      <el-button
+        type="primary"
+        v-if="isNeed_process_is_close"
+        @click="handleSave(1)"
+        >提交</el-button
+      >
       <el-button @click="cancel">返回</el-button>
     </div>
-    <process-submit-dialog api-fun-name="fininvoiceapplyStatusAPI" :processSubmitDialogFlag.sync="processSubmitDialogFlag" v-if="processSubmitDialogFlag" ref="processSubmitDialogRef" @reload="reload"></process-submit-dialog>
-
+    <process-submit-dialog
+      api-fun-name="fininvoiceapplyStatusAPI"
+      :processSubmitDialogFlag.sync="processSubmitDialogFlag"
+      v-if="processSubmitDialogFlag"
+      ref="processSubmitDialogRef"
+      @reload="reload"
+    ></process-submit-dialog>
+    <!--对账单-->
+    <account-statement-dialog
+      ref="accountStatementDialogRef"
+      :form="form"
+      v-if="accountStatementDialogFlag"
+      :accountstatement-dialog-flag.sync="accountStatementDialogFlag"
+      @getAccountData="getAccountData"
+      :contactData="contactData"
+    >
+    </account-statement-dialog>
   </ele-modal>
 </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 tableInfo from './tableInfo.vue';
-import { getTreeByPid } from '@/api/classifyManage';
-import {
-  invoiceApplyInfoAPI,
-  invoiceApplySaveAPI,
-  invoiceApplySubmit,
-  invoiceApplyUpdateAPI
-} from '@/api/financialManage/invoiceManage';
-import processSubmitDialog from "@/BIZComponents/processSubmitDialog/processSubmitDialog.vue";
-import modalTitle from '@/BIZComponents/modalTitle.vue';
-export default {
-  name: 'add-or-edit-dialog',
-  components: {
-    processSubmitDialog,
-    fileUpload,
-    personSelect,
-    tableInfo,modalTitle
-  },
-  props: {
-    addOrEditDialogFlag: {
-      type: Boolean,
-      default: false
+  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 tableInfo from './tableInfo.vue';
+  import { getTreeByPid } from '@/api/classifyManage';
+  import {
+    invoiceApplyInfoAPI,
+    invoiceApplySaveAPI,
+    invoiceApplyUpdateAPI
+  } from '@/api/financialManage/invoiceManage';
+  import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
+  import modalTitle from '@/BIZComponents/modalTitle.vue';
+  import accountStatementDialog from './accountstatementDialog.vue';
+
+  export default {
+    name: 'add-or-edit-dialog',
+    components: {
+      processSubmitDialog,
+      fileUpload,
+      personSelect,
+      tableInfo,
+      modalTitle,
+      accountStatementDialog
     },
-    contactData: {
-      type: Object,
-      default: () => {
-        return {};
-      }
-    }
-  },
-  provide() {
-    return {
-      invoiceType: () => this.form.type
-    };
-  },
-  computed: {
-    ...mapGetters(['user'])
-  },
-  data() {
-    return {
-      fullscreen: false,
-      dialogType: '',
-      title: '',
-      isOtherSourceFlag: false,
-      processSubmitDialogFlag: false,
-      form: {
-        id: '',
-        accountingSubjectCode: '',
-        accountingSubjectId: '',
-        accountingSubjectName: '',
-        amount: undefined,
-        applyDeptId: '',
-        applyDeptName: '',
-        applyUserId: '',
-        applyUserName: '',
-        companyAddress: '',
-        companyBankAccount: '',
-        companyUsc: '',
-        expectInvoiceDate: '',
-        companyBankBranchNo: '',
-        companyName: '',
-        receiverAddress: '',
-        receiverName: '',
-        receiverTel: '',
-        companyTel: '',
-        detailList: [],
-        drawerId: '',
-        drawerName: '',
-        files: [],
-        invoiceStatus: '',
-        link: [],
-        remark: '',
-        settlementAccountId: '',
-        settlementAccountName: '',
-        type: ''
+    props: {
+      addOrEditDialogFlag: {
+        type: Boolean,
+        default: false
       },
-      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' },
-        companyName: { required: true, message: '请输入', trigger: 'blur' },
-        type: { required: true, message: '请选择', trigger: 'change' }
-      }
-    };
-  },
-  created() {},
-  methods: {
-    //从发票管理新增发票初始化
-    async init(row = {}, type) {
-      this.title = type == 'add' ? '新增' : '修改';
-      this.dialogType = type;
-      await this.getClassifyList(24, 'accountingSubjectList');
-      await this.getDeptList();
-      if (type == 'add') {
-        this.form.applyDeptId = this.user.info.groupId;
-        this.form.applyDeptName = this.user.info.groupName;
-        this.form.applyUserId = this.user.info.userId;
-        this.form.applyUserName = this.user.info.name;
-      } else {
-        await this.getInfo(row.id);
+      contactData: {
+        type: Object,
+        default: () => {
+          return {};
+        }
       }
-      this.$nextTick(async () => {
-        await this.getUserList(this.form.applyDeptId);
-      });
     },
-    //从其他来源新增发票初始化
-    createInvoice(
-      row = {},
-      invoiceType,
-      tableInfo = {},
-      isOtherSourceFlag = true,
-      dialogType = 'add'
-    ) {
-      this.form.type = invoiceType;
-      this.isOtherSourceFlag = isOtherSourceFlag;
-      this.dialogType = dialogType;
-      this.init(row, dialogType);
+    provide() {
+      return {
+        invoiceType: () => this.form.type
+      };
+    },
+    computed: {
+      ...mapGetters(['user'])
+    },
+    data() {
+      return {
+        fullscreen: false,
+        dialogType: '',
+        title: '',
+        isOtherSourceFlag: false,
+        processSubmitDialogFlag: false,
+        accountStatementDialogFlag: false,
+
+        form: {
+          id: '',
+          accountingSubjectCode: '',
+          accountingSubjectId: '',
+          accountingSubjectName: '',
+          amount: undefined,
+          applyDeptId: '',
+          applyDeptName: '',
+          applyUserId: '',
+          applyUserName: '',
+          companyAddress: '',
+          companyBankAccount: '',
+          companyUsc: '',
+          expectInvoiceDate: '',
+          companyBankBranchNo: '',
+          companyName: '',
+          receiverAddress: '',
+          receiverName: '',
+          receiverTel: '',
+          companyTel: '',
+          detailList: [],
+          drawerId: '',
+          drawerName: '',
+          files: [],
+          invoiceStatus: '',
+          link: [],
+          remark: '',
+          settlementAccountId: '',
+          settlementAccountName: '',
+          type: ''
+        },
+        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' },
+          companyName: { required: true, message: '请输入', trigger: 'blur' },
+          type: { required: true, message: '请选择', trigger: 'change' },
+          sourceType: { required: true, message: '请选择', trigger: 'change' }
+        }
+      };
+    },
+    created() {},
+    methods: {
+      //从发票管理新增发票初始化
+      async init(row = {}, type) {
+        this.title = type == 'add' ? '新增' : '修改';
+        this.dialogType = type;
+        await this.getClassifyList(24, 'accountingSubjectList');
+        await this.getDeptList();
+        if (type == 'add') {
+          this.form.applyDeptId = this.user.info.groupId;
+          this.form.applyDeptName = this.user.info.groupName;
+          this.form.applyUserId = this.user.info.userId;
+          this.form.applyUserName = this.user.info.name;
+        } else {
+          await this.getInfo(row.id);
+        }
+        this.$nextTick(async () => {
+          await this.getUserList(this.form.applyDeptId);
+        });
+      },
 
-      setTimeout(() => {
+      //对账单
+      async handleSelectAccount() {
+        this.accountStatementDialogFlag = true;
+      },
+      getAccountData(tableInfo) {
+        this.form.sourceId = tableInfo?.children?.id;
+        this.form.sourceCode = tableInfo?.statementNo
         this.$nextTick(() => {
           this.$refs.table.getAccountData(tableInfo);
         });
-      }, 400);
-    },
-    //获取详情
-    async getInfo(id) {
-      this.form = await invoiceApplyInfoAPI(id);
-    },
+      },
+      //从其他来源新增发票初始化
+      createInvoice(
+        row = {},
+        invoiceType,
+        tableInfo = {},
+        isOtherSourceFlag = true,
+        dialogType = 'add'
+      ) {
+        this.form.type = invoiceType;
+        this.isOtherSourceFlag = isOtherSourceFlag;
+        this.dialogType = dialogType;
+        this.init(row, dialogType);
 
-    //获取分类管理中的数据
-    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'
+        setTimeout(() => {}, 400);
+      },
+      //获取详情
+      async getInfo(id) {
+        this.form = await invoiceApplyInfoAPI(id);
+      },
+
+      //获取分类管理中的数据
+      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;
-    },
-    //选择人员数据
-    changDrawerName(val, info) {
-      this.form.drawerName = info.name;
-    },
-    //
-    handleSelType(val) {
-      this.$refs.table.clearTable();
-    },
-    setPrice(val) {
-      this.form.amount = val;
-    },
-    //
-    handleSave(flag) {
-      this.$refs.form.validate(async (valid) => {
-        if (!valid) return this.$message.warning('有必填项未填,请检查');
-        let tableData = await this.$refs.table.getTableValidate();
-        this.form.link = tableData.link;
-        this.form.detailList = tableData.detailList;
-        const API =
-          this.dialogType == 'add'
-            ? invoiceApplySaveAPI
-            : invoiceApplyUpdateAPI;
-        const id = await API(this.form);
-        if (flag) {
-          await this.handleSub(id);
-          return
+      },
+      // 选择负责人部门
+      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 });
         }
-        this.$message.success('操作成功');
+      },
+      //选择人员数据
+      changeUserInfo(val, info) {
+        this.form.applyUserName = info.name;
+      },
+      //选择人员数据
+      changDrawerName(val, info) {
+        this.form.drawerName = info.name;
+      },
+      //
+      handleSelType(val) {
+        this.form.sourceId = ''
+        this.form.sourceCode = ''
+        this.$refs.table.clearTable();
+      },
+      setPrice(val) {
+        this.form.amount = val;
+      },
+      //
+      handleSave(flag) {
+        this.$refs.form.validate(async (valid) => {
+          if (!valid) return this.$message.warning('有必填项未填,请检查');
+          let tableData = await this.$refs.table.getTableValidate();
+          this.form.link = tableData.link;
+          this.form.detailList = tableData.detailList;
+          const API =
+            this.dialogType == 'add'
+              ? invoiceApplySaveAPI
+              : invoiceApplyUpdateAPI;
+          const id = await API(this.form);
+          if (flag) {
+            await this.handleSub(id);
+            return;
+          }
+          this.$message.success('操作成功');
+          this.done();
+          this.cancel();
+        });
+      },
+      //提交-开启流程
+      async handleSub(id = '') {
+        let data = await invoiceApplyInfoAPI(id);
+        this.processSubmitDialogFlag = true;
+        let key =
+          data.type == 1 ? 'fin_invoice_apply' : 'fin_invoice_receive_apply';
+        this.$nextTick(() => {
+          let params = {
+            businessId: data.id,
+            businessKey: key,
+            formCreateUserId: data.createUserId,
+            variables: {
+              type: data.type,
+              businessCode: data.code
+            }
+            // callBackMethodType : '1',
+            // callBackMethod : 'proTargetPlanApproveApiImpl.updatePlanApprovalStatus',
+            // pcHandle : '/bpm/handleTask/components/project-manage/plan-manage/submit.vue',
+            // pcView : '/bpm/handleTask/components/project-manage/plan-manage/detailDialog.vue',
+            // miniHandle : '',
+            // miniView : '',
+          };
+          this.$refs.processSubmitDialogRef.init(params);
+        });
+        // try {
+        //   await invoiceApplySubmit({
+        //     businessId: id || this.form.id,
+        //     type: this.form.type
+        //   });
+        // } catch (e) {
+        //   this.$message.error(e.message);
+        // }
+      },
+      reload() {
         this.done();
         this.cancel();
-      });
-    },
-    //提交-开启流程
-    async handleSub(id = '') {
-      let data = await invoiceApplyInfoAPI(id);
-      this.processSubmitDialogFlag = true
-      let key = data.type == 1?'fin_invoice_apply':'fin_invoice_receive_apply'
-      this.$nextTick(()=>{
-        let params = {
-          businessId:data.id,
-          businessKey : key,
-          formCreateUserId: data.createUserId,
-          variables:{
-            type: data.type,
-            businessCode:data.code
-          },
-          // callBackMethodType : '1',
-          // callBackMethod : 'proTargetPlanApproveApiImpl.updatePlanApprovalStatus',
-          // pcHandle : '/bpm/handleTask/components/project-manage/plan-manage/submit.vue',
-          // pcView : '/bpm/handleTask/components/project-manage/plan-manage/detailDialog.vue',
-          // miniHandle : '',
-          // miniView : '',
-        }
-        this.$refs.processSubmitDialogRef.init(params)
-      })
-      // try {
-      //   await invoiceApplySubmit({
-      //     businessId: id || this.form.id,
-      //     type: this.form.type
-      //   });
-      // } catch (e) {
-      //   this.$message.error(e.message);
-      // }
-    },
-    reload(){
-      this.done()
-      this.cancel()
-    },
-    //刷新主列表数据
-    done() {
-      this.$emit('reload');
-    },
-    //关闭弹窗
-    cancel() {
-      this.$emit('update:addOrEditDialogFlag', false);
+      },
+      //刷新主列表数据
+      done() {
+        this.$emit('reload');
+      },
+      //关闭弹窗
+      cancel() {
+        this.$emit('update:addOrEditDialogFlag', false);
+      }
     }
-  }
-};
+  };
 </script>
-<style scoped lang="scss">
-</style>
+<style scoped lang="scss"></style>

+ 17 - 44
src/views/financialManage/invoiceManage/components/tableInfo.vue

@@ -8,39 +8,16 @@
       :datasource="tableForm.detailList"
       row-key="id"
     >
-      <!-- 表头工具栏 -->
-      <template v-slot:toolbar>
-        <el-button
-          v-if="form.type && dialogType != 'view' && !isOtherSourceFlag"
-          size="small"
-          type="primary"
-          icon="el-icon-plus"
-          class="ele-btn-icon"
-          @click="handleSelectAccount"
-        >
-          选择关联类型
-        </el-button>
-      </template>
+   
     </ele-pro-table>
-    <!--对账单-->
-    <account-statement-dialog
-      ref="accountStatementDialogRef"
-      :form="form"
-      v-if="accountStatementDialogFlag"
-      :accountstatement-dialog-flag.sync="accountStatementDialogFlag"
-      @getAccountData="getAccountData"
-      :contactData="contactData"
-    >
-    </account-statement-dialog>
+
   </div>
 </template>
 <script>
-import accountStatementDialog from './accountstatementDialog.vue';
 
 export default {
   name: 'tableInfo',
   components: {
-    accountStatementDialog
   },
   props: {
     form: {
@@ -68,7 +45,6 @@ export default {
   },
   data() {
     return {
-      accountStatementDialogFlag: false,
       columns: [
         {
           width: 45,
@@ -78,20 +54,20 @@ export default {
           fixed: 'left'
         },
 
-        {
-          width: 100,
-          prop: 'typeName',
-          label: '类型',
-          slot: 'typeName',
-          align: 'center'
-        },
-        {
-          minWidth: 100,
-          prop: 'sourceCode',
-          label: '类型编码',
-          slot: 'sourceCode',
-          align: 'center'
-        },
+        // {
+        //   width: 100,
+        //   prop: 'typeName',
+        //   label: '类型',
+        //   slot: 'typeName',
+        //   align: 'center'
+        // },
+        // {
+        //   minWidth: 100,
+        //   prop: 'sourceCode',
+        //   label: '类型编码',
+        //   slot: 'sourceCode',
+        //   align: 'center'
+        // },
         // {
         //   width: 100,
         //   prop: 'productCategoryName',
@@ -211,10 +187,7 @@ export default {
     this.tableForm = this.form;
   },
   methods: {
-    //对账单
-    async handleSelectAccount() {
-      this.accountStatementDialogFlag = true;
-    },
+ 
     //获取选择的对账单数据
     async getAccountData(params) {
       if (params.children.orderType == 6) {

+ 255 - 224
src/views/financialManage/receivableManage/index.vue

@@ -24,6 +24,15 @@
           >
             收款
           </el-link>
+          <el-link
+            type="primary"
+            :underline="false"
+            icon="el-icon-plus"
+            @click="sub(row)"
+            v-if="[0, 3].includes(row.approvalStatus)"
+          >
+            提交
+          </el-link>
         </template>
         <!-- 收款信息 -->
         <template v-slot:code="{ row }">
@@ -65,248 +74,270 @@
       v-if="invoiceDetailDialogFlag"
       :detailDialogFlag.sync="invoiceDetailDialogFlag"
     ></invoice-detail-dialog>
+    <process-submit-dialog
+      :processSubmitDialogFlag.sync="processSubmitDialogFlag"
+      v-if="processSubmitDialogFlag"
+      ref="processSubmitDialogRef"
+      @reload="reload"
+    ></process-submit-dialog>
   </div>
 </template>
 
 <script>
-import { reviewStatus } from '@/enum/dict';
-import dictMixins from '@/mixins/dictMixins';
-import { finReceivablePageListAPI } from '@/api/financialManage/receivableManage';
-import collectionDialog from './components/collectionDialog.vue';
-import searchTable from './searchTable.vue';
-import detailDialog from './components/detailDialog.vue';
-import invoiceDetailDialog from '../invoiceManage/components/detailDialog.vue';
-export default {
-  mixins: [dictMixins],
-  components: {
-    searchTable,
-    collectionDialog,
-    detailDialog,
-    invoiceDetailDialog
-  },
-  //客户管理数据
-  props: {
-    contactData: {
-      type: Object,
-      default: () => {
-        return {};
-      }
+  import { reviewStatus } from '@/enum/dict';
+  import dictMixins from '@/mixins/dictMixins';
+  import { finReceivablePageListAPI } from '@/api/financialManage/receivableManage';
+  import collectionDialog from './components/collectionDialog.vue';
+  import searchTable from './searchTable.vue';
+  import detailDialog from './components/detailDialog.vue';
+  import invoiceDetailDialog from '../invoiceManage/components/detailDialog.vue';
+import processSubmitDialog from "@/BIZComponents/processSubmitDialog/processSubmitDialog.vue";
+
+  export default {
+    mixins: [dictMixins],
+    components: {
+      searchTable,
+      collectionDialog,
+      detailDialog,
+      invoiceDetailDialog,processSubmitDialog
     },
-    saleOrderData: {
-      type: Object,
-      default: () => {
-        return {};
-      }
-    }
-  },
-  data() {
-    return {
-      // 加载状态
-      loading: false,
-      collectionDialogFlag: false,
-      detailDialogFlag: false,
-      invoiceDetailDialogFlag: false,
-      selection: [],
-      statusList: [
-        {
-          label: '未收款',
-          value: 0
-        },
-        {
-          label: '部分收款',
-          value: 1
-        },
-        {
-          label: '已收全款',
-          value: 2
+    //客户管理数据
+    props: {
+      contactData: {
+        type: Object,
+        default: () => {
+          return {};
         }
-      ]
-    };
-  },
-  computed: {
-    columns() {
-      return [
-        {
-          width: 60,
-          label: '序号',
-          type: 'index',
-          columnKey: 'index',
-          align: 'center'
-        },
-        {
-          minWidth: 130,
-          prop: 'code',
-          label: '应收编码',
-          align: 'center',
-          slot: 'code',
-          showOverflowTooltip: true
-        },
-        {
-          minWidth: 120,
-          prop: 'invoiceCode',
-          label: '发票编码',
-          slot: 'invoiceCode',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          minWidth: 130,
-          prop: 'contactName',
-          label: '单位名称',
-          align: 'center',
-          slot: 'contactName',
-          showOverflowTooltip: true
-        },
-        {
-          minWidth: 140,
-          prop: 'receivableDate',
-          label: '应收日期',
-          slot: 'receivableDate',
-          align: 'center',
-          showOverflowTooltip: true
-        },
-        {
-          minWidth: 100,
-          prop: 'receivableTotalPrice',
-          label: '应收金额',
-          align: 'center',
-          slot: 'receivableTotalPrice',
-          showOverflowTooltip: true
-        },
-        {
-          minWidth: 100,
-          prop: 'receivedTotalPrice',
-          label: '已收金额',
-          align: 'center',
-          slot: 'receivedTotalPrice',
-          showOverflowTooltip: true
-        },
-        {
-          minWidth: 100,
-          prop: 'unreceiveTotalPrice',
-          label: '未收金额',
-          align: 'center',
-          slot: 'unreceiveTotalPrice',
-          showOverflowTooltip: true
-        },
-        {
-          minWidth: 100,
-          prop: 'sourceCode',
-          label: '来源编码',
-          align: 'center',
-          slot: 'sourceCode',
-          showOverflowTooltip: true
-        },
-        {
-          minWidth: 100,
-          prop: 'accountingSubjectName',
-          label: '会计科目',
-          align: 'center',
-          slot: 'accountingSubjectName',
-          showOverflowTooltip: true
-        },
-        {
-          minWidth: 100,
-          prop: 'status',
-          label: '收款状态',
-          align: 'center',
-          slot: 'status',
-          showOverflowTooltip: true,
-          formatter: (_row, _column, cellValue) => {
-            return this.statusList.find((item) => item.value === cellValue)
-              .label;
-          }
-        },
-        {
-          minWidth: 100,
-          prop: 'approvalStatus',
-          label: '审核状态',
-          align: 'center',
-          slot: 'approvalStatus',
-          formatter: (_row, _column, cellValue) => {
-            return reviewStatus[_row.approvalStatus];
-          }
-        },
-        {
-          columnKey: 'action',
-          label: '操作',
-          width: 100,
-          align: 'center',
-          resizable: false,
-          slot: 'action',
-          showOverflowTooltip: true,
-          fixed: 'right'
+      },
+      saleOrderData: {
+        type: Object,
+        default: () => {
+          return {};
         }
-      ];
-    }
-  },
-  created() {},
-  methods: {
-    handleCollection(row = {}, type) {
-      this.collectionDialogFlag = true;
-      this.$nextTick(() => {
-        this.$refs.collectionDialogRef.init(row, type);
-      });
+      }
     },
-    handleDetail(row = {}, type) {
-      this.detailDialogFlag = true;
-      this.$nextTick(() => {
-        this.$refs.detailDialogRef.init(row.id);
-      });
+    data() {
+      return {
+        // 加载状态
+        loading: false,
+        collectionDialogFlag: false,
+        detailDialogFlag: false,
+        invoiceDetailDialogFlag: false,
+        processSubmitDialogFlag: false,
+        selection: [],
+        statusList: [
+          {
+            label: '未收款',
+            value: 0
+          },
+          {
+            label: '部分收款',
+            value: 1
+          },
+          {
+            label: '已收全款',
+            value: 2
+          }
+        ]
+      };
+    },
+    computed: {
+      columns() {
+        return [
+          {
+            width: 60,
+            label: '序号',
+            type: 'index',
+            columnKey: 'index',
+            align: 'center'
+          },
+          {
+            minWidth: 130,
+            prop: 'code',
+            label: '应收编码',
+            align: 'center',
+            slot: 'code',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 120,
+            prop: 'invoiceCode',
+            label: '发票编码',
+            slot: 'invoiceCode',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 130,
+            prop: 'contactName',
+            label: '单位名称',
+            align: 'center',
+            slot: 'contactName',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 140,
+            prop: 'receivableDate',
+            label: '应收日期',
+            slot: 'receivableDate',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 100,
+            prop: 'receivableTotalPrice',
+            label: '应收金额',
+            align: 'center',
+            slot: 'receivableTotalPrice',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 100,
+            prop: 'receivedTotalPrice',
+            label: '已收金额',
+            align: 'center',
+            slot: 'receivedTotalPrice',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 100,
+            prop: 'unreceiveTotalPrice',
+            label: '未收金额',
+            align: 'center',
+            slot: 'unreceiveTotalPrice',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 100,
+            prop: 'sourceCode',
+            label: '来源编码',
+            align: 'center',
+            slot: 'sourceCode',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 100,
+            prop: 'accountingSubjectName',
+            label: '会计科目',
+            align: 'center',
+            slot: 'accountingSubjectName',
+            showOverflowTooltip: true
+          },
+          {
+            minWidth: 100,
+            prop: 'status',
+            label: '收款状态',
+            align: 'center',
+            slot: 'status',
+            showOverflowTooltip: true,
+            formatter: (_row, _column, cellValue) => {
+              return this.statusList.find((item) => item.value === cellValue)
+                .label;
+            }
+          },
+          {
+            minWidth: 100,
+            prop: 'approvalStatus',
+            label: '审核状态',
+            align: 'center',
+            slot: 'approvalStatus',
+            formatter: (_row, _column, cellValue) => {
+              return reviewStatus[_row.approvalStatus];
+            }
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 100,
+            align: 'center',
+            resizable: false,
+            slot: 'action',
+            showOverflowTooltip: true,
+            fixed: 'right'
+          }
+        ];
+      }
     },
-    handleInvoiceDetail(row = {}, type) {
-      this.invoiceDetailDialogFlag = true;
-      this.$nextTick(() => {
+    created() {},
+    methods: {
+      handleCollection(row = {}, type) {
+        this.collectionDialogFlag = true;
+        this.$nextTick(() => {
+          this.$refs.collectionDialogRef.init(row, type);
+        });
+      },
+      handleDetail(row = {}, type) {
+        this.detailDialogFlag = true;
+        this.$nextTick(() => {
+          this.$refs.detailDialogRef.init(row.id);
+        });
+      },
+      handleInvoiceDetail(row = {}, type) {
+        this.invoiceDetailDialogFlag = true;
+        this.$nextTick(() => {
+          let params = {
+            id: row.invoiceId
+          };
+          this.$refs.invoiceDetailDialogRef.init(params, type);
+        });
+      },
+      /* 表格数据源 */
+      datasource({ page, limit, where, order }) {
+        console.log(this.saleOrderData, 'this.saleOrderData');
+        if (this.contactData.id) {
+          where['contactId'] = this.contactData.id;
+        }
+        if (this.saleOrderData.id) {
+          where['saleOrderCode'] = this.saleOrderData.orderNo;
+        }
+        return finReceivablePageListAPI({
+          pageNum: page,
+          size: limit,
+          ...where
+        });
+      },
+      sub(res) {
+        this.processSubmitDialogFlag = true;
         let params = {
-          id: row.invoiceId
+          businessId: res.id,
+          businessKey: 'fin_receivable_approve',
+          formCreateUserId: res.createUserId,
+          variables: {
+            businessCode: res.code
+          }
         };
-        this.$refs.invoiceDetailDialogRef.init(params, type);
-      });
-    },
-    /* 表格数据源 */
-    datasource({ page, limit, where, order }) {
-      console.log(this.saleOrderData,'this.saleOrderData')
-      if (this.contactData.id) {
-        where['contactId'] = this.contactData.id;
+        this.$nextTick(() => {
+          this.$refs.processSubmitDialogRef.init(params);
+        });
+      },
+      /* 刷新表格 */
+      reload(where) {
+        this.$nextTick(() => {
+          this.$refs.table.reload({ page: 1, where });
+        });
       }
-      if (this.saleOrderData.id) {
-        where['saleOrderCode'] = this.saleOrderData.orderNo;
-      }
-      return finReceivablePageListAPI({
-        pageNum: page,
-        size: limit,
-        ...where
-      });
-    },
-
-    /* 刷新表格 */
-    reload(where) {
-      this.$nextTick(() => {
-        this.$refs.table.reload({ page: 1, where });
-      });
     }
-  }
-};
+  };
 </script>
 
 <style lang="scss" scoped>
-:deep(.el-link--inner) {
-  margin-left: 0px !important;
-}
+  :deep(.el-link--inner) {
+    margin-left: 0px !important;
+  }
 
-.sys-organization-list {
-  height: calc(100vh - 264px);
-  box-sizing: border-box;
-  border-width: 1px;
-  border-style: solid;
-  overflow: auto;
-}
+  .sys-organization-list {
+    height: calc(100vh - 264px);
+    box-sizing: border-box;
+    border-width: 1px;
+    border-style: solid;
+    overflow: auto;
+  }
 
-.sys-organization-list :deep(.el-tree-node__content) {
-  height: 40px;
+  .sys-organization-list :deep(.el-tree-node__content) {
+    height: 40px;
 
-  & > .el-tree-node__expand-icon {
-    margin-left: 10px;
+    & > .el-tree-node__expand-icon {
+      margin-left: 10px;
+    }
   }
-}
 </style>

+ 141 - 139
src/views/marketManagem/components/viewDialog.vue

@@ -33,8 +33,8 @@
       class="el-form-box"
       :model="form"
       label-width="0"
-      v-show="activeComp=='main'"
-      style="padding:0px 15px"
+      v-show="activeComp == 'main'"
+      style="padding: 0px 15px"
     >
       <el-row :gutter="15">
         <el-descriptions title="基本信息" :column="4">
@@ -42,7 +42,7 @@
             {{ form.code }}
           </el-descriptions-item>
           <el-descriptions-item label="类型">
-            {{ form.code }}
+            {{ getDictValue('市场活动类型', form.type) }}
           </el-descriptions-item>
           <el-descriptions-item label="主题">{{
             form.name
@@ -165,156 +165,158 @@
       v-if="activeComp === 'bpm' && form.businessId"
       :id="form.businessId"
     ></bpmDetail>
-
   </ele-modal>
 </template>
 <script>
-const defForm = {
-  name: '', //名称
-  type: '', //类型
-  state: '', //状态
-  promoterId: '', //发起人id
-  promoterName: '', //发起人名称
-  visitingUnits: '', //来访单位id
-  visitingUnitsName: '', //来访单位名称
-  numberOfVisitors: '', //来访人数
-  commanderId: '', //负责人id
-  commanderName: '', //负责人名称
-  positionId: '', //职位id
-  positionName: '', //职位名称
-  phone: '', //电话
-  start: '', //开始时间
-  end: '', //结束
-  receptionDepartmentId: [], //接待部门id
-  receptionDepartmentName: '', //接待部门名称
-  receptionUserId: [], //接待人id
-  receptionUserName: '', //接待人名称
-  costOwnerId: '', //费用归属人id
-  costOwnerName: '', //归属人名称
-  welcomeSign: '', //欢迎标语
-  receptionProjectList: [] //接待项目
-};
-import { getById } from '@/api/marketManagem/index';
+  const defForm = {
+    name: '', //名称
+    type: '', //类型
+    state: '', //状态
+    promoterId: '', //发起人id
+    promoterName: '', //发起人名称
+    visitingUnits: '', //来访单位id
+    visitingUnitsName: '', //来访单位名称
+    numberOfVisitors: '', //来访人数
+    commanderId: '', //负责人id
+    commanderName: '', //负责人名称
+    positionId: '', //职位id
+    positionName: '', //职位名称
+    phone: '', //电话
+    start: '', //开始时间
+    end: '', //结束
+    receptionDepartmentId: [], //接待部门id
+    receptionDepartmentName: '', //接待部门名称
+    receptionUserId: [], //接待人id
+    receptionUserName: '', //接待人名称
+    costOwnerId: '', //费用归属人id
+    costOwnerName: '', //归属人名称
+    welcomeSign: '', //欢迎标语
+    receptionProjectList: [] //接待项目
+  };
+  import { getById } from '@/api/marketManagem/index';
 
-import modalTitle from '@/BIZComponents/modalTitle.vue';
-import bpmDetail from '@/views/bpm/processInstance/detail.vue';
+  import modalTitle from '@/BIZComponents/modalTitle.vue';
+  import bpmDetail from '@/views/bpm/processInstance/detail.vue';
 
-import dictMixins from '@/mixins/dictMixins';
+  import dictMixins from '@/mixins/dictMixins';
 
-//车
-import taskInfoTable from './taskInfoTable.vue';
-//用餐
-import mealList from './mealList.vue';
-//纪念品
-import souvenirList from './souvenirList.vue';
-//会议
-import conferenceList from './conferenceList.vue';
-//参观
-import companyList from './companyList.vue';
-//游览
-import visitList from './visitList.vue';
-//住宿
-import putUpList from './putUpList.vue';
-export default {
-  components: {
-    taskInfoTable,
-    mealList,
-    souvenirList,
-    conferenceList,
-    companyList,
-    modalTitle,
-    putUpList,
-    visitList,bpmDetail
-  },
-  mixins: [dictMixins],
-  computed: {
-    getTimeArr() {
-      let [start, end] = this.TimeArr;
-      return (
-        Math.ceil(
-          (new Date(end).getTime() - new Date(start).getTime()) /
-            1000 /
-            60 /
-            60 /
-            24
-        ) || ''
-      );
-    }
-  },
-  data() {
-    return {
-      activeComp: 'main',
+  //车
+  import taskInfoTable from './taskInfoTable.vue';
+  //用餐
+  import mealList from './mealList.vue';
+  //纪念品
+  import souvenirList from './souvenirList.vue';
+  //会议
+  import conferenceList from './conferenceList.vue';
+  //参观
+  import companyList from './companyList.vue';
+  //游览
+  import visitList from './visitList.vue';
+  //住宿
+  import putUpList from './putUpList.vue';
+  export default {
+    components: {
+      taskInfoTable,
+      mealList,
+      souvenirList,
+      conferenceList,
+      companyList,
+      modalTitle,
+      putUpList,
+      visitList,
+      bpmDetail
+    },
+    mixins: [dictMixins],
+    computed: {
+      getTimeArr() {
+        let [start, end] = this.TimeArr;
+        return (
+          Math.ceil(
+            (new Date(end).getTime() - new Date(start).getTime()) /
+              1000 /
+              60 /
+              60 /
+              24
+          ) || ''
+        );
+      }
+    },
+    data() {
+      return {
+        activeComp: 'main',
         tabOptions: [
           { key: 'main', name: '详情' },
           { key: 'bpm', name: '审批流程' }
         ],
-      fullscreen: false,
-      checkList: [],
-      TimeArr: [],
-      addOrEditDialogFlag: false,
-      activeName: '',
-      organizationList: [],
-      form: { ...defForm },
+        fullscreen: false,
+        checkList: [],
+        TimeArr: [],
+        addOrEditDialogFlag: false,
+        activeName: '',
+        organizationList: [],
+        form: { ...defForm },
 
-      rules: {}
-    };
-  },
-  mounted() {},
-  created() {},
-  methods: {
-    //初始化
-    async open(row = {}, type) {
-      this.addOrEditDialogFlag = true;
+        rules: {}
+      };
+    },
+    mounted() {},
+    created() {
+      this.requestDict('市场活动类型');
+    },
+    methods: {
+      //初始化
+      async open(row = {}, type) {
+        this.addOrEditDialogFlag = true;
 
-      this.form = await getById(row.id);
-      this.$nextTick(() => {
-        this.form.receptionProjectList.forEach((item) => {
-          if (
-            this.$refs[item.refKey] &&
-            this.$refs[item.refKey][0].putTableValue
-          ) {
-            this.$refs[item.refKey][0].putTableValue(item.tableList);
+        this.form = await getById(row.id);
+        this.$nextTick(() => {
+          this.form.receptionProjectList.forEach((item) => {
+            if (
+              this.$refs[item.refKey] &&
+              this.$refs[item.refKey][0].putTableValue
+            ) {
+              this.$refs[item.refKey][0].putTableValue(item.tableList);
+            }
+            this.checkList.push(item.refKey);
+          });
+          this.activeName = this.checkList[0];
+          if (this.form.start && this.form.end) {
+            this.TimeArr = [this.form.start, this.form.end];
           }
-          this.checkList.push(item.refKey);
         });
-        this.activeName = this.checkList[0];
-        if (this.form.start && this.form.end) {
-          this.TimeArr = [this.form.start, this.form.end];
-        }
-      });
+      }
     }
-  }
-};
+  };
 </script>
 <style scoped lang="scss">
-:deep(.el-input__inner) {
-  border: none;
-}
-:deep(.el-input-group__append) {
-  border-left: 1px solid var(--border-color-base);
-}
-:deep(.el-descriptions--medium.is-bordered .el-descriptions-item__cell) {
-  padding: 2px;
-}
-:deep(.el-descriptions-item__label) {
-  color: #333;
-  text-align: center !important;
-}
-:deep(.el-form-box .el-form-item) {
-  margin-bottom: 0 !important;
-}
-:deep(.el-descriptions__header) {
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-:deep(.el-textarea__inner) {
-  border: none;
-}
-:deep(.el-descriptions__title) {
-  color: #1890ff;
-}
-:deep(.el-tabs__item){
-  font-size: 16px;
-  font-weight: 800;
-}
-</style>
+  :deep(.el-input__inner) {
+    border: none;
+  }
+  :deep(.el-input-group__append) {
+    border-left: 1px solid var(--border-color-base);
+  }
+  :deep(.el-descriptions--medium.is-bordered .el-descriptions-item__cell) {
+    padding: 2px;
+  }
+  :deep(.el-descriptions-item__label) {
+    color: #333;
+    text-align: center !important;
+  }
+  :deep(.el-form-box .el-form-item) {
+    margin-bottom: 0 !important;
+  }
+  :deep(.el-descriptions__header) {
+    margin-top: 10px;
+    margin-bottom: 10px;
+  }
+  :deep(.el-textarea__inner) {
+    border: none;
+  }
+  :deep(.el-descriptions__title) {
+    color: #1890ff;
+  }
+  :deep(.el-tabs__item) {
+    font-size: 16px;
+    font-weight: 800;
+  }
+</style>

+ 3 - 0
src/views/saleManage/quotation/components/searchQuotation.vue

@@ -20,12 +20,15 @@
         <el-form-item label="总金额最小:" prop="totalPriceMin">
           <el-input
           placeholder="请输入"
+          type="number"
            v-model.trim="params.totalPriceMin" controls-position="right" :min="0" ></el-input>
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg:6, md: 12 } : { span:6 }">
         <el-form-item label="总金额最大:" prop="totalPriceMax">
           <el-input
+          type="number"
+
           placeholder="请输入"
            v-model.trim="params.totalPriceMax" controls-position="right" :min="0" ></el-input>
         </el-form-item>