|
@@ -0,0 +1,380 @@
|
|
|
+<template>
|
|
|
+ <el-dialog
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ :visible="visible"
|
|
|
+ title="选择发票抬头"
|
|
|
+ width="1024px"
|
|
|
+ top="60px"
|
|
|
+ center
|
|
|
+ @close="handleClose"
|
|
|
+ >
|
|
|
+ <div class="demand-order">
|
|
|
+ <ex-table
|
|
|
+ v-loading="loading"
|
|
|
+ :table="table"
|
|
|
+ :data="tableData"
|
|
|
+ :columns="columns"
|
|
|
+ :page="pageInfo"
|
|
|
+ :size="size"
|
|
|
+ @page-curr-change="handlePageChange"
|
|
|
+ @page-size-change="handleSizeChange"
|
|
|
+ @selection-change="list => selected = list"
|
|
|
+ @screen-reset="
|
|
|
+ pageInfo.curr = 1;
|
|
|
+ parmValue.page = 1;
|
|
|
+ searchList();
|
|
|
+ "
|
|
|
+ @screen-submit="
|
|
|
+ pageInfo.curr = 1;
|
|
|
+ parmValue.page = 1;
|
|
|
+ searchList();
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <template #table-header="{}">
|
|
|
+ <div style="width: 100%">
|
|
|
+ <el-row style="padding: 0 0 10px 80px">
|
|
|
+ <el-col :span="6" style="width: 300px">
|
|
|
+ <period-date-picker
|
|
|
+ :type="1"
|
|
|
+ :width="'135px'"
|
|
|
+ :size="searchSize"
|
|
|
+ :start="parmValue.start"
|
|
|
+ :end="parmValue.end"
|
|
|
+ @timeReturned="handleTime"
|
|
|
+ />
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="4" style="width: 160px">
|
|
|
+ <el-select
|
|
|
+ v-model="parmValue.status"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ :size="searchSize"
|
|
|
+ placeholder="状态"
|
|
|
+ style="width: 100%"
|
|
|
+ @change="
|
|
|
+ pageInfo.curr = 1;
|
|
|
+ parmValue.page = 1;
|
|
|
+ searchList();
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in statusList"
|
|
|
+ :key="'status' + item.id"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.id"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="3" class="fr" style="width: 66px; padding: 0 0 0 10px">
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ :size="searchSize"
|
|
|
+ @click="searchList"
|
|
|
+ >
|
|
|
+ 刷新
|
|
|
+ </el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="3" class="fr" style="width: 66px; padding: 0 0 0 10px">
|
|
|
+ <el-button type="warning" :size="searchList" @click="restSearch">
|
|
|
+ 重置
|
|
|
+ </el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="4" style="width: 543px">
|
|
|
+ <el-input
|
|
|
+ :size="searchSize"
|
|
|
+ v-model="sinput"
|
|
|
+ :maxlength="40"
|
|
|
+ clearable
|
|
|
+ @blur="
|
|
|
+ pageInfo.curr = 1;
|
|
|
+ parmValue.page = 1;
|
|
|
+ searchList();
|
|
|
+ "
|
|
|
+ @clear="
|
|
|
+ pageInfo.curr = 1;
|
|
|
+ parmValue.page = 1;
|
|
|
+ searchList();
|
|
|
+ "
|
|
|
+ placeholder="关键字"
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ v-model="select"
|
|
|
+ slot="prepend"
|
|
|
+ style="width: 125px"
|
|
|
+ placeholder="关键字类型"
|
|
|
+ >
|
|
|
+ <el-option label="抬头名称" value="title" />
|
|
|
+ <el-option label="纳税人识别号" value="tax_no" />
|
|
|
+ <el-option label="联系方式" value="tel" />
|
|
|
+ </el-select>
|
|
|
+ </el-input>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template #depart_info="{ scope }">
|
|
|
+ <el-tag
|
|
|
+ style="margin: 0 3px 0 0"
|
|
|
+ :size="tablebtnSize"
|
|
|
+ type="''"
|
|
|
+ v-for="(ditem, dindex) in scope.row.depart_info"
|
|
|
+ :key="ditem + dindex"
|
|
|
+ >
|
|
|
+ <span v-for="(cItem, cindex) in ditem" :key="cItem + dindex + cindex">
|
|
|
+ <span v-show="cindex > 0">/</span><span>{{ cItem }}</span>
|
|
|
+ </span>
|
|
|
+ {{ ditem.name }}</el-tag
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ <template #status="{ scope }">
|
|
|
+ <el-tag
|
|
|
+ :size="tablebtnSize"
|
|
|
+ :type="scope.row.status + '' === '0' ? 'warning' : ''"
|
|
|
+ v-text="
|
|
|
+ (statusList.find((item) => item.code + '' == scope.row.status + '') || {})
|
|
|
+ .name || '--'
|
|
|
+ "
|
|
|
+ ></el-tag>
|
|
|
+ </template>
|
|
|
+ </ex-table>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="flex-end">
|
|
|
+ <el-button size="mini" type="primary" @click="onConfirmDemand">
|
|
|
+ 保存
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import pageInfo from "@/mixins/elPaginationHandle"
|
|
|
+import asyncRequest from "@/apis/service/customerService/demandOrder";
|
|
|
+import { mapGetters } from "vuex"
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: "invoicing",
|
|
|
+ props:['visible'],
|
|
|
+ mixins: [pageInfo],
|
|
|
+ computed: {
|
|
|
+ ...mapGetters(["tablebtnSize", "searchSize", "size"]),
|
|
|
+ powers() {
|
|
|
+ const tran =
|
|
|
+ this.$store.getters.btnList.find((item) => item.menu_route == "invoicing") || {};
|
|
|
+ const { action } = tran ?? {};
|
|
|
+ return action ?? [];
|
|
|
+ },
|
|
|
+ _visible:{
|
|
|
+ get(){
|
|
|
+ return this.visible
|
|
|
+ },
|
|
|
+ set(value){
|
|
|
+ this.$emit('update:visible', value)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ select: "title",
|
|
|
+ sinput: "",
|
|
|
+ statusList:[
|
|
|
+ {code:0, name:'禁用'},
|
|
|
+ {code:1, name:'启用'},
|
|
|
+ ],
|
|
|
+ selected:[],
|
|
|
+ sitem: null,
|
|
|
+ loading: true,
|
|
|
+ showModel: false,
|
|
|
+ isDetail: false,
|
|
|
+ modelId: 0,
|
|
|
+ parmValue: {
|
|
|
+ name: "", // 业务员名字
|
|
|
+ username: "", // 账号
|
|
|
+ status: "", //
|
|
|
+ company_name: "", //创建人部门
|
|
|
+ page: 1, // 页码
|
|
|
+ size: 15, // 每页显示条数
|
|
|
+ },
|
|
|
+ tableData: [],
|
|
|
+ passwordModel: false,
|
|
|
+ passwordModelId: 0,
|
|
|
+ isPasswordDetail: false,
|
|
|
+ // 表格 - 数据
|
|
|
+ tableData: [],
|
|
|
+ // 表格 - 参数
|
|
|
+ table: {
|
|
|
+ stripe: true,
|
|
|
+ border: true,
|
|
|
+ _defaultHeader_: ["setcol"],
|
|
|
+ },
|
|
|
+ // 表格 - 分页
|
|
|
+ pageInfo: {
|
|
|
+ size: 15,
|
|
|
+ curr: 1,
|
|
|
+ total: 0,
|
|
|
+ },
|
|
|
+ // 表格 - 列参数
|
|
|
+ columns: [
|
|
|
+ {
|
|
|
+ type:'selection',
|
|
|
+ fixed:'left'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: "title_type",
|
|
|
+ label: "抬头类型",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: "tax_no",
|
|
|
+ label: "统一社会信用代码",
|
|
|
+ width: "155px",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: "title",
|
|
|
+ label: "发票抬头",
|
|
|
+ "min-width": "150px",
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ prop: "tel",
|
|
|
+ label: "联系电话",
|
|
|
+ "min-width": "110px",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: "status",
|
|
|
+ label: "状态",
|
|
|
+ _slot_: "status",
|
|
|
+ width: "70px",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: "create_time",
|
|
|
+ label: "创建时间",
|
|
|
+ width: "140px",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ };
|
|
|
+ },
|
|
|
+ watch:{
|
|
|
+ visible(value){
|
|
|
+ if(!value) return
|
|
|
+ this.searchList()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ handleClose(){
|
|
|
+ this.pageInfo = {
|
|
|
+ curr: 1,
|
|
|
+ size: 10,
|
|
|
+ total: 0
|
|
|
+ }
|
|
|
+
|
|
|
+ this.parmValue = {
|
|
|
+ reqCode: "",
|
|
|
+ page: 1
|
|
|
+ }
|
|
|
+
|
|
|
+ this._visible = false
|
|
|
+ },
|
|
|
+ // 时间
|
|
|
+ async handleTime(e) {
|
|
|
+ this.parmValue.start = e.startTime || "";
|
|
|
+ this.parmValue.end = e.endTime || "";
|
|
|
+ if (
|
|
|
+ (this.parmValue.start !== "" && this.parmValue.end !== "") ||
|
|
|
+ (this.parmValue.start === "" && this.parmValue.end === "")
|
|
|
+ ) {
|
|
|
+ this.pageInfo.curr = 1;
|
|
|
+ this.parmValue.page = 1;
|
|
|
+ await this.searchList();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ restSearch() {
|
|
|
+ this.select = "title";
|
|
|
+ this.sinput = "";
|
|
|
+ this.parmValue = {
|
|
|
+ name: "", // 业务员名字
|
|
|
+ username: "", // 账号
|
|
|
+ status: "", //
|
|
|
+ company_name: "", //创建人部门
|
|
|
+ page: 1, // 页码
|
|
|
+ size: 15, // 每页显示条数
|
|
|
+ };
|
|
|
+ // 表格 - 分页
|
|
|
+ this.pageInfo = {
|
|
|
+ size: 15,
|
|
|
+ curr: 1,
|
|
|
+ total: 0,
|
|
|
+ };
|
|
|
+ this.searchList();
|
|
|
+ },
|
|
|
+ openModal(row, type) {
|
|
|
+ const { status, id } = row;
|
|
|
+ // if (type === "005" && status + '' === "1") {
|
|
|
+ // this.$message.warning("禁用后,才可以修改!");
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ this.showModel = true;
|
|
|
+ this.modelId = id;
|
|
|
+ this.isDetail = type === "007";
|
|
|
+ this.sitem = row;
|
|
|
+ },
|
|
|
+ openPasswordModal(id, isDetail) {
|
|
|
+ this.passwordModel = true;
|
|
|
+ this.passwordModelId = id;
|
|
|
+ this.isPasswordDetail = isDetail;
|
|
|
+ },
|
|
|
+ onConfirmDemand(){
|
|
|
+ if(this.selected.length === 0){
|
|
|
+ this.$message.warning('请选择一个发票抬头!')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if(this.selected.length > 1){
|
|
|
+ this.$message.warning('只能选择一个发票抬头!')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ this.$emit('change', this.selected[0])
|
|
|
+ this._visible = false
|
|
|
+ },
|
|
|
+ async searchList() {
|
|
|
+ if (
|
|
|
+ (this.parmValue.start !== "" && this.parmValue.end === "") ||
|
|
|
+ (this.parmValue.start == "" && this.parmValue.end != "")
|
|
|
+ ) {
|
|
|
+ this.$message.warning("开始时间和结束时间不能为空");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.loading = true;
|
|
|
+ this.parmValue.tax_no = "";
|
|
|
+ this.parmValue.tel = "";
|
|
|
+ this.parmValue.title = "";
|
|
|
+ this.parmValue[this.select] = this.sinput;
|
|
|
+ const model = {
|
|
|
+ ...this.parmValue,
|
|
|
+ limit: this.parmValue.size,
|
|
|
+ };
|
|
|
+ const { code, data } = await asyncRequest.titleList(model);
|
|
|
+ if (code === 1) {
|
|
|
+ const { list, total } = data;
|
|
|
+ this.tableData = list;
|
|
|
+ this.pageInfo.total = Number(total);
|
|
|
+ } else {
|
|
|
+ this.tableData = [];
|
|
|
+ this.pageInfo.total = 0;
|
|
|
+ }
|
|
|
+ this.loading = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style lang="scss" scoped>
|
|
|
+.demand-order{
|
|
|
+ /deep/ .el-pagination{
|
|
|
+ float: left !important;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|