|
@@ -39,6 +39,14 @@
|
|
|
>
|
|
>
|
|
|
批量删除
|
|
批量删除
|
|
|
</el-button>
|
|
</el-button>
|
|
|
|
|
+
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ size="small"
|
|
|
|
|
+ icon="el-icon-upload2"
|
|
|
|
|
+ @click="uploadFile"
|
|
|
|
|
+ >导入</el-button
|
|
|
|
|
+ >
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<!-- 查看详情列 -->
|
|
<!-- 查看详情列 -->
|
|
@@ -147,422 +155,434 @@
|
|
|
ref="processSubmitDialogRef"
|
|
ref="processSubmitDialogRef"
|
|
|
@reload="reload"
|
|
@reload="reload"
|
|
|
></process-submit-dialog>
|
|
></process-submit-dialog>
|
|
|
|
|
+
|
|
|
|
|
+ <importDialog
|
|
|
|
|
+ ref="importDialogRef"
|
|
|
|
|
+ @success="reload"
|
|
|
|
|
+ :fileUrl="'/eom/quote/downLoadTemplate'"
|
|
|
|
|
+ :isWeb="false"
|
|
|
|
|
+ fileName="报价管理导入模板"
|
|
|
|
|
+ apiUrl="/eom/quote/importFile"
|
|
|
|
|
+ />
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
- import searchQuotation from './components/searchQuotation.vue';
|
|
|
|
|
- import addDialog from './components/addDialog.vue';
|
|
|
|
|
- import detailDialog from './components/detailDialog.vue';
|
|
|
|
|
- import popModal from '@/components/pop-modal';
|
|
|
|
|
- import { reviewStatus } from '@/enum/dict';
|
|
|
|
|
- import addContractBookDialog from '@/views/contractManage/contractBook/components/addDialog.vue';
|
|
|
|
|
- import { contactTypeTree, contactDetail } from '@/api/saleManage/contact';
|
|
|
|
|
- // import fileMain from '@/components/addDoc/index.vue';
|
|
|
|
|
|
|
+import searchQuotation from './components/searchQuotation.vue';
|
|
|
|
|
+import addDialog from './components/addDialog.vue';
|
|
|
|
|
+import detailDialog from './components/detailDialog.vue';
|
|
|
|
|
+import popModal from '@/components/pop-modal';
|
|
|
|
|
+import { reviewStatus } from '@/enum/dict';
|
|
|
|
|
+import addContractBookDialog from '@/views/contractManage/contractBook/components/addDialog.vue';
|
|
|
|
|
+import { contactTypeTree, contactDetail } from '@/api/saleManage/contact';
|
|
|
|
|
+import importDialog from '@/components/upload/import-dialog.vue';
|
|
|
|
|
+// import fileMain from '@/components/addDoc/index.vue';
|
|
|
|
|
|
|
|
- import {
|
|
|
|
|
- getTableList,
|
|
|
|
|
- getDetail,
|
|
|
|
|
- deleteInformation,
|
|
|
|
|
- submit,
|
|
|
|
|
- quoteUpdateStatus
|
|
|
|
|
- } from '@/api/saleManage/quotation';
|
|
|
|
|
|
|
+import {
|
|
|
|
|
+ getTableList,
|
|
|
|
|
+ getDetail,
|
|
|
|
|
+ deleteInformation,
|
|
|
|
|
+ submit,
|
|
|
|
|
+ quoteUpdateStatus
|
|
|
|
|
+} from '@/api/saleManage/quotation';
|
|
|
|
|
|
|
|
- import dictMixins from '@/mixins/dictMixins';
|
|
|
|
|
- import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
|
|
|
|
|
- import tabMixins from '@/mixins/tableColumnsMixin';
|
|
|
|
|
|
|
+import dictMixins from '@/mixins/dictMixins';
|
|
|
|
|
+import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
|
|
|
|
|
+import tabMixins from '@/mixins/tableColumnsMixin';
|
|
|
|
|
|
|
|
- export default {
|
|
|
|
|
- mixins: [dictMixins, tabMixins],
|
|
|
|
|
- components: {
|
|
|
|
|
- processSubmitDialog,
|
|
|
|
|
- searchQuotation,
|
|
|
|
|
- popModal,
|
|
|
|
|
- addDialog,
|
|
|
|
|
- detailDialog,
|
|
|
|
|
- addContractBookDialog,
|
|
|
|
|
- // fileMain
|
|
|
|
|
- },
|
|
|
|
|
- props: {
|
|
|
|
|
- contactData: {
|
|
|
|
|
- default: () => {
|
|
|
|
|
- return {};
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- businessOpportunityData: {
|
|
|
|
|
- //商机
|
|
|
|
|
- default: () => {
|
|
|
|
|
- return {};
|
|
|
|
|
- }
|
|
|
|
|
|
|
+export default {
|
|
|
|
|
+ mixins: [dictMixins, tabMixins],
|
|
|
|
|
+ components: {
|
|
|
|
|
+ processSubmitDialog,
|
|
|
|
|
+ searchQuotation,
|
|
|
|
|
+ popModal,
|
|
|
|
|
+ addDialog,
|
|
|
|
|
+ detailDialog,
|
|
|
|
|
+ importDialog,
|
|
|
|
|
+ addContractBookDialog
|
|
|
|
|
+ // fileMain
|
|
|
|
|
+ },
|
|
|
|
|
+ props: {
|
|
|
|
|
+ contactData: {
|
|
|
|
|
+ default: () => {
|
|
|
|
|
+ return {};
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
- data() {
|
|
|
|
|
- return {
|
|
|
|
|
- selection: [], //单选中集合
|
|
|
|
|
- delVisible: false, //批量删除弹框状态
|
|
|
|
|
- loading: false, // 加载状态
|
|
|
|
|
- processSubmitDialogFlag: false,
|
|
|
|
|
- treeList: [],
|
|
|
|
|
- columns: [
|
|
|
|
|
- {
|
|
|
|
|
- width: 45,
|
|
|
|
|
- type: 'selection',
|
|
|
|
|
- columnKey: 'selection',
|
|
|
|
|
- align: 'center'
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- columnKey: 'index',
|
|
|
|
|
- label: '序号',
|
|
|
|
|
- type: 'index',
|
|
|
|
|
- width: 55,
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- fixed: 'left'
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'code',
|
|
|
|
|
- label: '编码',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 200
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'contactName',
|
|
|
|
|
- label: '询价方名称',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- slot: 'contactName',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 200
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'contactLinkName',
|
|
|
|
|
- label: '询价方联系人',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 140
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'contactTel',
|
|
|
|
|
- label: '询价方联系电话',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 140
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'productNames',
|
|
|
|
|
- label: '产品名称',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 140
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'quoteName',
|
|
|
|
|
- label: '报价方名称',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 200
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'quoteLinkName',
|
|
|
|
|
- label: '报价方联系人',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 140
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ businessOpportunityData: {
|
|
|
|
|
+ //商机
|
|
|
|
|
+ default: () => {
|
|
|
|
|
+ return {};
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ data() {
|
|
|
|
|
+ return {
|
|
|
|
|
+ selection: [], //单选中集合
|
|
|
|
|
+ delVisible: false, //批量删除弹框状态
|
|
|
|
|
+ loading: false, // 加载状态
|
|
|
|
|
+ processSubmitDialogFlag: false,
|
|
|
|
|
+ treeList: [],
|
|
|
|
|
+ columns: [
|
|
|
|
|
+ {
|
|
|
|
|
+ width: 45,
|
|
|
|
|
+ type: 'selection',
|
|
|
|
|
+ columnKey: 'selection',
|
|
|
|
|
+ align: 'center'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ columnKey: 'index',
|
|
|
|
|
+ label: '序号',
|
|
|
|
|
+ type: 'index',
|
|
|
|
|
+ width: 55,
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ fixed: 'left'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'code',
|
|
|
|
|
+ label: '编码',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 200
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'contactName',
|
|
|
|
|
+ label: '询价方名称',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ slot: 'contactName',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 200
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'contactLinkName',
|
|
|
|
|
+ label: '询价方联系人',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 140
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'contactTel',
|
|
|
|
|
+ label: '询价方联系电话',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 140
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'productNames',
|
|
|
|
|
+ label: '产品名称',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 140
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'quoteName',
|
|
|
|
|
+ label: '报价方名称',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 200
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'quoteLinkName',
|
|
|
|
|
+ label: '报价方联系人',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 140
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'quoteTel',
|
|
|
|
|
- label: '报价方联系电话',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 140
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'deliveryDate',
|
|
|
|
|
- label: '交货日期',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 100
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'settlementModeName',
|
|
|
|
|
- label: '付款方式',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 100
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'quoteTel',
|
|
|
|
|
+ label: '报价方联系电话',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 140
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'deliveryDate',
|
|
|
|
|
+ label: '交货日期',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 100
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'settlementModeName',
|
|
|
|
|
+ label: '付款方式',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 100
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
- // {
|
|
|
|
|
- // prop: 'taxRate',
|
|
|
|
|
- // label: '税率',
|
|
|
|
|
- // align: 'center',
|
|
|
|
|
- // showOverflowTooltip: true,
|
|
|
|
|
- // minWidth: 140,
|
|
|
|
|
- // formatter: (_row, _column, cellValue) => {
|
|
|
|
|
- // return _row.taxRate ? _row.taxRate + '%' : '';
|
|
|
|
|
- // }
|
|
|
|
|
- // },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'totalPrice',
|
|
|
|
|
- label: '总金额',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 100
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'askFile',
|
|
|
|
|
- label: '附件',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- slot: 'askFile',
|
|
|
|
|
- minWidth: 130
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ // {
|
|
|
|
|
+ // prop: 'taxRate',
|
|
|
|
|
+ // label: '税率',
|
|
|
|
|
+ // align: 'center',
|
|
|
|
|
+ // showOverflowTooltip: true,
|
|
|
|
|
+ // minWidth: 140,
|
|
|
|
|
+ // formatter: (_row, _column, cellValue) => {
|
|
|
|
|
+ // return _row.taxRate ? _row.taxRate + '%' : '';
|
|
|
|
|
+ // }
|
|
|
|
|
+ // },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'totalPrice',
|
|
|
|
|
+ label: '总金额',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 100
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'askFile',
|
|
|
|
|
+ label: '附件',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ slot: 'askFile',
|
|
|
|
|
+ minWidth: 130
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'dataStatus',
|
|
|
|
|
- label: '启用状态',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 100,
|
|
|
|
|
- formatter: (_row, _column, cellValue) => {
|
|
|
|
|
- return _row.dataStatus === 1 ? '正常' : '终止';
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'status',
|
|
|
|
|
- label: '审核状态',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 100,
|
|
|
|
|
- formatter: (_row, _column, cellValue) => {
|
|
|
|
|
- return reviewStatus[_row.status];
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'createUserName',
|
|
|
|
|
- label: '创建人',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 80
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- prop: 'createTime',
|
|
|
|
|
- label: '创建时间',
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- minWidth: 170,
|
|
|
|
|
- formatter: (_row, _column, cellValue) => {
|
|
|
|
|
- return this.$util.toDateString(cellValue);
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- columnKey: 'action',
|
|
|
|
|
- label: '操作',
|
|
|
|
|
- width: 230,
|
|
|
|
|
- align: 'center',
|
|
|
|
|
- resizable: false,
|
|
|
|
|
- slot: 'action',
|
|
|
|
|
- showOverflowTooltip: true,
|
|
|
|
|
- fixed: 'right'
|
|
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'dataStatus',
|
|
|
|
|
+ label: '启用状态',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 100,
|
|
|
|
|
+ formatter: (_row, _column, cellValue) => {
|
|
|
|
|
+ return _row.dataStatus === 1 ? '正常' : '终止';
|
|
|
}
|
|
}
|
|
|
- ],
|
|
|
|
|
- cacheKeyUrl: 'eos-5569a1b1-saleManage-quotation'
|
|
|
|
|
- };
|
|
|
|
|
- },
|
|
|
|
|
- computed: {},
|
|
|
|
|
- created() {
|
|
|
|
|
- this.requestDict('客户状态');
|
|
|
|
|
- this.getTreeData();
|
|
|
|
|
- },
|
|
|
|
|
- methods: {
|
|
|
|
|
- quoteUpdateStatus,
|
|
|
|
|
- /* 表格数据源 */
|
|
|
|
|
- datasource({ page, limit, where, order }) {
|
|
|
|
|
- if (this.contactData.id) {
|
|
|
|
|
- where['contactId'] = this.contactData.id;
|
|
|
|
|
- }
|
|
|
|
|
- if (this.businessOpportunityData.id) {
|
|
|
|
|
- where['opportunityId'] = this.businessOpportunityData.id;
|
|
|
|
|
- }
|
|
|
|
|
- return getTableList({
|
|
|
|
|
- pageNum: page,
|
|
|
|
|
- size: limit,
|
|
|
|
|
- ...where
|
|
|
|
|
- });
|
|
|
|
|
- },
|
|
|
|
|
- //获取合同分类
|
|
|
|
|
- async getTreeData() {
|
|
|
|
|
- try {
|
|
|
|
|
- this.treeLoading = true;
|
|
|
|
|
- const res = await contactTypeTree({ id: '20' });
|
|
|
|
|
- this.treeLoading = false;
|
|
|
|
|
- if (res?.code === '0') {
|
|
|
|
|
- this.treeList = res.data;
|
|
|
|
|
-
|
|
|
|
|
- return this.treeList;
|
|
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'status',
|
|
|
|
|
+ label: '审核状态',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 100,
|
|
|
|
|
+ formatter: (_row, _column, cellValue) => {
|
|
|
|
|
+ return reviewStatus[_row.status];
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'createUserName',
|
|
|
|
|
+ label: '创建人',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 80
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ prop: 'createTime',
|
|
|
|
|
+ label: '创建时间',
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ minWidth: 170,
|
|
|
|
|
+ formatter: (_row, _column, cellValue) => {
|
|
|
|
|
+ return this.$util.toDateString(cellValue);
|
|
|
}
|
|
}
|
|
|
- } catch (error) {}
|
|
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ columnKey: 'action',
|
|
|
|
|
+ label: '操作',
|
|
|
|
|
+ width: 230,
|
|
|
|
|
+ align: 'center',
|
|
|
|
|
+ resizable: false,
|
|
|
|
|
+ slot: 'action',
|
|
|
|
|
+ showOverflowTooltip: true,
|
|
|
|
|
+ fixed: 'right'
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
|
|
+ cacheKeyUrl: 'eos-5569a1b1-saleManage-quotation'
|
|
|
|
|
+ };
|
|
|
|
|
+ },
|
|
|
|
|
+ computed: {},
|
|
|
|
|
+ created() {
|
|
|
|
|
+ this.requestDict('客户状态');
|
|
|
|
|
+ this.getTreeData();
|
|
|
|
|
+ },
|
|
|
|
|
+ methods: {
|
|
|
|
|
+ quoteUpdateStatus,
|
|
|
|
|
+ /* 表格数据源 */
|
|
|
|
|
+ datasource({ page, limit, where, order }) {
|
|
|
|
|
+ if (this.contactData.id) {
|
|
|
|
|
+ where['contactId'] = this.contactData.id;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (this.businessOpportunityData.id) {
|
|
|
|
|
+ where['opportunityId'] = this.businessOpportunityData.id;
|
|
|
|
|
+ }
|
|
|
|
|
+ return getTableList({
|
|
|
|
|
+ pageNum: page,
|
|
|
|
|
+ size: limit,
|
|
|
|
|
+ ...where
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ //获取合同分类
|
|
|
|
|
+ async getTreeData() {
|
|
|
|
|
+ try {
|
|
|
|
|
+ this.treeLoading = true;
|
|
|
|
|
+ const res = await contactTypeTree({ id: '20' });
|
|
|
this.treeLoading = false;
|
|
this.treeLoading = false;
|
|
|
- },
|
|
|
|
|
- /* 刷新表格 */
|
|
|
|
|
- reload(where) {
|
|
|
|
|
- this.$refs.table.reload({ page: 1, where });
|
|
|
|
|
- },
|
|
|
|
|
-
|
|
|
|
|
- //新增编辑
|
|
|
|
|
- openEdit(type, row) {
|
|
|
|
|
- this.$refs.addDialogRef.open(type, row, row.id);
|
|
|
|
|
- this.$refs.addDialogRef.$refs.form &&
|
|
|
|
|
- this.$refs.addDialogRef.$refs.form.clearValidate();
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ if (res?.code === '0') {
|
|
|
|
|
+ this.treeList = res.data;
|
|
|
|
|
|
|
|
- //批量删除
|
|
|
|
|
- allDelBtn() {
|
|
|
|
|
- if (this.selection.length === 0) return;
|
|
|
|
|
- let flag = this.selection.some((item) => [1, 2].includes(item.status));
|
|
|
|
|
- if (flag)
|
|
|
|
|
- return this.$message.warning(
|
|
|
|
|
- '抱歉已审核、审核中的数据不能删除,请检查'
|
|
|
|
|
- );
|
|
|
|
|
- this.delVisible = true;
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ return this.treeList;
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (error) {}
|
|
|
|
|
+ this.treeLoading = false;
|
|
|
|
|
+ },
|
|
|
|
|
+ /* 刷新表格 */
|
|
|
|
|
+ reload(where) {
|
|
|
|
|
+ this.$refs.table.reload({ page: 1, where });
|
|
|
|
|
+ },
|
|
|
|
|
+ //导入
|
|
|
|
|
+ uploadFile() {
|
|
|
|
|
+ this.$refs.importDialogRef.open();
|
|
|
|
|
+ },
|
|
|
|
|
+ //新增编辑
|
|
|
|
|
+ openEdit(type, row) {
|
|
|
|
|
+ this.$refs.addDialogRef.open(type, row, row.id);
|
|
|
|
|
+ this.$refs.addDialogRef.$refs.form &&
|
|
|
|
|
+ this.$refs.addDialogRef.$refs.form.clearValidate();
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
- //删除接口
|
|
|
|
|
- remove(delData) {
|
|
|
|
|
- deleteInformation(delData).then((res) => {
|
|
|
|
|
- this.$message.success('删除成功!');
|
|
|
|
|
- this.reload();
|
|
|
|
|
- });
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ //批量删除
|
|
|
|
|
+ allDelBtn() {
|
|
|
|
|
+ if (this.selection.length === 0) return;
|
|
|
|
|
+ let flag = this.selection.some((item) => [1, 2].includes(item.status));
|
|
|
|
|
+ if (flag)
|
|
|
|
|
+ return this.$message.warning('抱歉已审核、审核中的数据不能删除,请检查');
|
|
|
|
|
+ this.delVisible = true;
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
- //删除弹框确定
|
|
|
|
|
- commitBtn() {
|
|
|
|
|
- const dataId = this.selection.map((v) => v.id);
|
|
|
|
|
- this.remove(dataId);
|
|
|
|
|
- },
|
|
|
|
|
- async setQuoteStatus(row) {
|
|
|
|
|
- await quoteUpdateStatus({ id: row.id, status: 2 });
|
|
|
|
|
- this.$message.success('操作成功!');
|
|
|
|
|
|
|
+ //删除接口
|
|
|
|
|
+ remove(delData) {
|
|
|
|
|
+ deleteInformation(delData).then((res) => {
|
|
|
|
|
+ this.$message.success('删除成功!');
|
|
|
this.reload();
|
|
this.reload();
|
|
|
- },
|
|
|
|
|
- //新增合同
|
|
|
|
|
- async addGenerateContract(row) {
|
|
|
|
|
- //获取详情
|
|
|
|
|
- const data = await getDetail(row.id);
|
|
|
|
|
- const contact = await contactDetail(data.contactId);
|
|
|
|
|
- let obj = {
|
|
|
|
|
- contractVO: {
|
|
|
|
|
- categoryId: '',
|
|
|
|
|
- categoryName: '',
|
|
|
|
|
- contractEndDate: '',
|
|
|
|
|
- contractFile: [],
|
|
|
|
|
- contractNo: '',
|
|
|
|
|
- contractNumber: '',
|
|
|
|
|
- contractStartDate: '',
|
|
|
|
|
- createDept: '',
|
|
|
|
|
- createTime: '',
|
|
|
|
|
- createUsername: '',
|
|
|
|
|
- discountTotalPrice: '',
|
|
|
|
|
- enabled: '',
|
|
|
|
|
- id: '',
|
|
|
|
|
- opportunityId: '',
|
|
|
|
|
- partaAddress: data.contactAddress,
|
|
|
|
|
- partaEmail: data.contactEmail,
|
|
|
|
|
- partaFax: data.contactFax,
|
|
|
|
|
- partaId: data.contactId,
|
|
|
|
|
- partaLinkId: data.contactLinkId,
|
|
|
|
|
- partaLinkName: data.contactLinkName,
|
|
|
|
|
- partaName: data.contactName,
|
|
|
|
|
- partaTel: data.contactTel,
|
|
|
|
|
- partaUnifiedSocialCreditCode: '',
|
|
|
|
|
- partbAddress: data.quoteAddress,
|
|
|
|
|
- partbEmail: data.quoteEmail,
|
|
|
|
|
- partbFax: data.quoteFax,
|
|
|
|
|
- partbId: data.quoteCompanyId,
|
|
|
|
|
- partbLinkId: data.quoteLinkId,
|
|
|
|
|
- partbLinkName: data.quoteLinkName,
|
|
|
|
|
- partbName: data.quoteName,
|
|
|
|
|
- partbTel: data.quoteTel,
|
|
|
|
|
- partbUnifiedSocialCreditCode: '',
|
|
|
|
|
- receiptPaymentType: '',
|
|
|
|
|
- reviewerId: '',
|
|
|
|
|
- reviewerName: '',
|
|
|
|
|
- reviewerTime: '',
|
|
|
|
|
- sourceId: row.id,
|
|
|
|
|
- sourceType: 1,
|
|
|
|
|
- sourceName: data.code,
|
|
|
|
|
- status: '',
|
|
|
|
|
- totalPrice: data.totalPrice,
|
|
|
|
|
- discountTotalPrice: data.totalPrice,
|
|
|
|
|
- type: '1',
|
|
|
|
|
- typeName: '销售合同',
|
|
|
|
|
- updateUsername: '',
|
|
|
|
|
- sourceCode: row.code,
|
|
|
|
|
- contractName: contact.base.simpleName,
|
|
|
|
|
- settlementModeName: data.settlementModeName,
|
|
|
|
|
- settlementMode: data.settlementMode
|
|
|
|
|
- },
|
|
|
|
|
- receiptPaymentList: [],
|
|
|
|
|
- productList: data.quoteProductList
|
|
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ //删除弹框确定
|
|
|
|
|
+ commitBtn() {
|
|
|
|
|
+ const dataId = this.selection.map((v) => v.id);
|
|
|
|
|
+ this.remove(dataId);
|
|
|
|
|
+ },
|
|
|
|
|
+ async setQuoteStatus(row) {
|
|
|
|
|
+ await quoteUpdateStatus({ id: row.id, status: 2 });
|
|
|
|
|
+ this.$message.success('操作成功!');
|
|
|
|
|
+ this.reload();
|
|
|
|
|
+ },
|
|
|
|
|
+ //新增合同
|
|
|
|
|
+ async addGenerateContract(row) {
|
|
|
|
|
+ //获取详情
|
|
|
|
|
+ const data = await getDetail(row.id);
|
|
|
|
|
+ const contact = await contactDetail(data.contactId);
|
|
|
|
|
+ let obj = {
|
|
|
|
|
+ contractVO: {
|
|
|
|
|
+ categoryId: '',
|
|
|
|
|
+ categoryName: '',
|
|
|
|
|
+ contractEndDate: '',
|
|
|
|
|
+ contractFile: [],
|
|
|
|
|
+ contractNo: '',
|
|
|
|
|
+ contractNumber: '',
|
|
|
|
|
+ contractStartDate: '',
|
|
|
|
|
+ createDept: '',
|
|
|
|
|
+ createTime: '',
|
|
|
|
|
+ createUsername: '',
|
|
|
|
|
+ discountTotalPrice: '',
|
|
|
|
|
+ enabled: '',
|
|
|
|
|
+ id: '',
|
|
|
|
|
+ opportunityId: '',
|
|
|
|
|
+ partaAddress: data.contactAddress,
|
|
|
|
|
+ partaEmail: data.contactEmail,
|
|
|
|
|
+ partaFax: data.contactFax,
|
|
|
|
|
+ partaId: data.contactId,
|
|
|
|
|
+ partaLinkId: data.contactLinkId,
|
|
|
|
|
+ partaLinkName: data.contactLinkName,
|
|
|
|
|
+ partaName: data.contactName,
|
|
|
|
|
+ partaTel: data.contactTel,
|
|
|
|
|
+ partaUnifiedSocialCreditCode: '',
|
|
|
|
|
+ partbAddress: data.quoteAddress,
|
|
|
|
|
+ partbEmail: data.quoteEmail,
|
|
|
|
|
+ partbFax: data.quoteFax,
|
|
|
|
|
+ partbId: data.quoteCompanyId,
|
|
|
|
|
+ partbLinkId: data.quoteLinkId,
|
|
|
|
|
+ partbLinkName: data.quoteLinkName,
|
|
|
|
|
+ partbName: data.quoteName,
|
|
|
|
|
+ partbTel: data.quoteTel,
|
|
|
|
|
+ partbUnifiedSocialCreditCode: '',
|
|
|
|
|
+ receiptPaymentType: '',
|
|
|
|
|
+ reviewerId: '',
|
|
|
|
|
+ reviewerName: '',
|
|
|
|
|
+ reviewerTime: '',
|
|
|
|
|
+ sourceId: row.id,
|
|
|
|
|
+ sourceType: 1,
|
|
|
|
|
+ sourceName: data.code,
|
|
|
|
|
+ status: '',
|
|
|
|
|
+ totalPrice: data.totalPrice,
|
|
|
|
|
+ discountTotalPrice: data.totalPrice,
|
|
|
|
|
+ type: '1',
|
|
|
|
|
+ typeName: '销售合同',
|
|
|
|
|
+ updateUsername: '',
|
|
|
|
|
+ sourceCode: row.code,
|
|
|
|
|
+ contractName: contact.base.simpleName,
|
|
|
|
|
+ settlementModeName: data.settlementModeName,
|
|
|
|
|
+ settlementMode: data.settlementMode
|
|
|
|
|
+ },
|
|
|
|
|
+ receiptPaymentList: [],
|
|
|
|
|
+ productList: data.quoteProductList
|
|
|
|
|
+ };
|
|
|
|
|
+ // return;
|
|
|
|
|
+ this.$refs.addContractBookDialogRef.open('add', obj, true, 'quotation');
|
|
|
|
|
+ },
|
|
|
|
|
+ //查看详情
|
|
|
|
|
+ openDetail(row) {
|
|
|
|
|
+ this.$refs.contactDetailDialogRef.open(row);
|
|
|
|
|
+ },
|
|
|
|
|
+ quotationSubmit(res) {
|
|
|
|
|
+ this.processSubmitDialogFlag = true;
|
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
|
+ let params = {
|
|
|
|
|
+ businessId: res.id,
|
|
|
|
|
+ businessKey: 'quote_approve',
|
|
|
|
|
+ formCreateUserId: res.createUserId,
|
|
|
|
|
+ variables: {
|
|
|
|
|
+ businessCode: res.code,
|
|
|
|
|
+ businessName: res.contactName,
|
|
|
|
|
+ businessType: '报价单'
|
|
|
|
|
+ }
|
|
|
|
|
+ // 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 : '',
|
|
|
};
|
|
};
|
|
|
- // return;
|
|
|
|
|
- this.$refs.addContractBookDialogRef.open('add', obj, true, 'quotation');
|
|
|
|
|
- },
|
|
|
|
|
- //查看详情
|
|
|
|
|
- openDetail(row) {
|
|
|
|
|
- this.$refs.contactDetailDialogRef.open(row);
|
|
|
|
|
- },
|
|
|
|
|
- quotationSubmit(res) {
|
|
|
|
|
- this.processSubmitDialogFlag = true;
|
|
|
|
|
- this.$nextTick(() => {
|
|
|
|
|
- let params = {
|
|
|
|
|
- businessId: res.id,
|
|
|
|
|
- businessKey: 'quote_approve',
|
|
|
|
|
- formCreateUserId: res.createUserId,
|
|
|
|
|
- variables: {
|
|
|
|
|
- businessCode: res.code,
|
|
|
|
|
- businessName: res.contactName,
|
|
|
|
|
- businessType: '报价单'
|
|
|
|
|
- }
|
|
|
|
|
- // 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);
|
|
|
|
|
- });
|
|
|
|
|
- // submit({
|
|
|
|
|
- // businessId: res.id
|
|
|
|
|
- // }).then((res) => {
|
|
|
|
|
- // this.$message.success('提交成功!');
|
|
|
|
|
- // this.reload();
|
|
|
|
|
- // });
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ this.$refs.processSubmitDialogRef.init(params);
|
|
|
|
|
+ });
|
|
|
|
|
+ // submit({
|
|
|
|
|
+ // businessId: res.id
|
|
|
|
|
+ // }).then((res) => {
|
|
|
|
|
+ // this.$message.success('提交成功!');
|
|
|
|
|
+ // this.reload();
|
|
|
|
|
+ // });
|
|
|
}
|
|
}
|
|
|
- };
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+};
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<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>
|
|
</style>
|