|
@@ -0,0 +1,525 @@
|
|
|
+<template>
|
|
|
+ <div class="supplierAccount">
|
|
|
+ <div class="supplierAccount_show_box" v-if="powers.some((i) => i == '001')">
|
|
|
+ <div class="role-list fl">
|
|
|
+ <supplierlist @change="supplierChange" />
|
|
|
+ </div>
|
|
|
+ <div class="rule-view fr">
|
|
|
+ <ex-table
|
|
|
+ v-loading="loading"
|
|
|
+ :table="table"
|
|
|
+ :data="tableData"
|
|
|
+ :columns="columns"
|
|
|
+ :page="pageInfo"
|
|
|
+ :size="size"
|
|
|
+ @page-curr-change="handlePageChange"
|
|
|
+ @page-size-change="handleSizeChange"
|
|
|
+ @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 0 80px">
|
|
|
+ <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.code"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.code"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="4" style="width: 200px; padding: 0 0 0 10px">
|
|
|
+ <el-input
|
|
|
+ :size="searchSize"
|
|
|
+ v-model="parmValue.keyword"
|
|
|
+ :maxlength="40"
|
|
|
+ @change="
|
|
|
+ pageInfo.curr = 1;
|
|
|
+ parmValue.page = 1;
|
|
|
+ searchList();
|
|
|
+ "
|
|
|
+ placeholder="姓名/手机号"
|
|
|
+ ></el-input>
|
|
|
+ </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="searchSize" @click="restSearch">
|
|
|
+ 重置
|
|
|
+ </el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="3"
|
|
|
+ class="fr"
|
|
|
+ style="width: 66px; padding: 0 0 0 10px"
|
|
|
+ v-if="powers.some((i) => i == '003')"
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ :size="searchSize"
|
|
|
+ type="success"
|
|
|
+ style="float: right"
|
|
|
+ @click="openModal('add', false)"
|
|
|
+ >
|
|
|
+ 添加
|
|
|
+ </el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div></template
|
|
|
+ >
|
|
|
+ <template #status="{ scope }">
|
|
|
+ <el-tag
|
|
|
+ :size="tablebtnSize"
|
|
|
+ :type="scope.row.status == '0' ? 'warning' : ''"
|
|
|
+ v-text="
|
|
|
+ (statusOptions.find((item) => item.id == scope.row.status) || {}).label ||
|
|
|
+ '--'
|
|
|
+ "
|
|
|
+ ></el-tag>
|
|
|
+ </template>
|
|
|
+ <template #ocr_status="{ scope }">
|
|
|
+ <el-tag
|
|
|
+ :size="tablebtnSize"
|
|
|
+ :type="
|
|
|
+ scope.row.ocr_status == '0'
|
|
|
+ ? 'info'
|
|
|
+ : scope.row.ocr_status == '1'
|
|
|
+ ? 'primary'
|
|
|
+ : scope.row.ocr_status == '2'
|
|
|
+ ? 'danger'
|
|
|
+ : ''
|
|
|
+ "
|
|
|
+ v-text="
|
|
|
+ (ocr_status.find((item) => item.id == scope.row.ocr_status) || {})
|
|
|
+ .label || '--'
|
|
|
+ "
|
|
|
+ ></el-tag>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template #operation="{ scope }">
|
|
|
+ <el-tooltip
|
|
|
+ v-if="powers.some((i) => i == '007')"
|
|
|
+ effect="dark"
|
|
|
+ content="详情"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <i class="el-icon-view tb-icon" @click="openModal(scope.row.uid, true)"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip
|
|
|
+ v-if="powers.some((i) => i == '005')"
|
|
|
+ effect="dark"
|
|
|
+ content="修改"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <i
|
|
|
+ class="el-icon-edit tb-icon"
|
|
|
+ @click="openModal(scope.row.uid, false)"
|
|
|
+ ></i>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip
|
|
|
+ v-if="powers.some((i) => i == '004') && scope.row.status === '1'"
|
|
|
+ effect="dark"
|
|
|
+ content="禁用"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <i
|
|
|
+ class="el-icon-video-pause tb-icon"
|
|
|
+ @click="changeStatus(scope.row.id, scope.row.status)"
|
|
|
+ ></i>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip
|
|
|
+ v-if="powers.some((i) => i == '004') && scope.row.status === '0'"
|
|
|
+ effect="dark"
|
|
|
+ content="启用"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <i
|
|
|
+ class="el-icon-video-play tb-icon"
|
|
|
+ @click="changeStatus(scope.row.id, scope.row.status)"
|
|
|
+ ></i>
|
|
|
+ </el-tooltip>
|
|
|
+ <el-tooltip
|
|
|
+ v-if="powers.some((i) => i == '006')"
|
|
|
+ effect="dark"
|
|
|
+ content="删除"
|
|
|
+ placement="top"
|
|
|
+ >
|
|
|
+ <i class="el-icon-delete tb-icon" @click="deleteItem(scope.row.id)"></i>
|
|
|
+ </el-tooltip>
|
|
|
+ </template>
|
|
|
+ </ex-table>
|
|
|
+ </div>
|
|
|
+ <add-edit
|
|
|
+ :id="modelId"
|
|
|
+ :sitem="sitem"
|
|
|
+ :show-model="showModel"
|
|
|
+ :is-detail="isDetail"
|
|
|
+ @refresh="searchList"
|
|
|
+ @cancel="showModel = false"
|
|
|
+ />
|
|
|
+
|
|
|
+ <reset-password
|
|
|
+ :id="passwordModelId"
|
|
|
+ :show-model="passwordModel"
|
|
|
+ :is-detail="isPasswordDetail"
|
|
|
+ @refresh="searchList"
|
|
|
+ @cancel="passwordModel = false"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <no-auth v-else></no-auth>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+import asyncRequest from "@/apis/service/serviceParam/supplierAccount";
|
|
|
+import { statusList } from "@/assets/js/statusList";
|
|
|
+import mixinPage from "@/mixins/elPaginationHandle";
|
|
|
+import { mapGetters } from "vuex";
|
|
|
+import supplierlist from "./supplierlist";
|
|
|
+import addEdit from "./addEdit";
|
|
|
+import resetPassword from "./resetPassword";
|
|
|
+import resToken from "@/mixins/resToken";
|
|
|
+import { columns } from "./columns";
|
|
|
+export default {
|
|
|
+ name: "supplierAccount",
|
|
|
+ mixins: [mixinPage, resToken],
|
|
|
+ components: {
|
|
|
+ supplierlist,
|
|
|
+ addEdit,
|
|
|
+ resetPassword,
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ //组件SIZE设置
|
|
|
+ ...mapGetters(["tablebtnSize", "searchSize", "size"]),
|
|
|
+ powers() {
|
|
|
+ const tran =
|
|
|
+ this.$store.getters.btnList.find(
|
|
|
+ (item) => item.menu_route == "supplierAccount"
|
|
|
+ ) || {};
|
|
|
+ const { action } = tran ?? {};
|
|
|
+ return action ?? [];
|
|
|
+ },
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ statusList: statusList,
|
|
|
+ loading: true,
|
|
|
+
|
|
|
+ stype: {},
|
|
|
+ parmValue: {
|
|
|
+ page: 1, // 页码
|
|
|
+ size: 15, // 每页显示条数
|
|
|
+ supplierNo: "",
|
|
|
+ keyword: "",
|
|
|
+ status: "",
|
|
|
+ },
|
|
|
+ showModel: false,
|
|
|
+ isDetail: false,
|
|
|
+ modelId: 0,
|
|
|
+ passwordModel: false,
|
|
|
+ passwordModelId: 0,
|
|
|
+ isPasswordDetail: false,
|
|
|
+ // 状态
|
|
|
+ statusOptions: [
|
|
|
+ { id: "0", label: "禁用" },
|
|
|
+ { id: "1", label: "启用" },
|
|
|
+ ],
|
|
|
+ ocr_status: [
|
|
|
+ { id: "0", label: "未上传" },
|
|
|
+ { id: "1", label: "识别成功" },
|
|
|
+ { id: "2", label: "识别失败" },
|
|
|
+ ],
|
|
|
+ // 表格 - 数据
|
|
|
+ tableData: [],
|
|
|
+ // 表格 - 参数
|
|
|
+ table: {
|
|
|
+ stripe: true,
|
|
|
+ border: true,
|
|
|
+ _defaultHeader_: ["setcol"],
|
|
|
+ },
|
|
|
+ // 表格 - 分页
|
|
|
+ pageInfo: {
|
|
|
+ size: 15,
|
|
|
+ curr: 1,
|
|
|
+ total: 0,
|
|
|
+ },
|
|
|
+ // 表格 - 列参数
|
|
|
+ columns,
|
|
|
+ };
|
|
|
+ },
|
|
|
+
|
|
|
+ methods: {
|
|
|
+ async supplierChange(e) {
|
|
|
+ this.parmValue.page = 1;
|
|
|
+ this.parmValue.supplierNo = e;
|
|
|
+ await this.searchList();
|
|
|
+ },
|
|
|
+
|
|
|
+ restSearch() {
|
|
|
+ // 表格 - 分页
|
|
|
+ this.pageInfo = {
|
|
|
+ size: 15,
|
|
|
+ curr: 1,
|
|
|
+ total: 0,
|
|
|
+ };
|
|
|
+ this.parmValue.page = 1;
|
|
|
+ this.parmValue.size = 15;
|
|
|
+ this.parmValue.keyword = "";
|
|
|
+ this.parmValue.status = "";
|
|
|
+ this.searchList();
|
|
|
+ },
|
|
|
+ openModal(id, isDetail) {
|
|
|
+ if (this.parmValue.supplierNo === "") {
|
|
|
+ this.$message.warning("请选择供应商!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.modelId = id;
|
|
|
+ this.isDetail = isDetail;
|
|
|
+ this.sitem = this.parmValue.supplierNo;
|
|
|
+ this.showModel = true;
|
|
|
+ },
|
|
|
+ openPasswordModal(id, isDetail) {
|
|
|
+ this.passwordModel = true;
|
|
|
+ this.passwordModelId = id;
|
|
|
+ this.isPasswordDetail = isDetail;
|
|
|
+ },
|
|
|
+
|
|
|
+ gotoEdit(row, type) {
|
|
|
+ const { status } = row;
|
|
|
+ if (type === "005" && status === "1") {
|
|
|
+ this.$message.warning("禁用后,才可以修改!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.routeGoto("supplierAccountDetail", {
|
|
|
+ id: row.code,
|
|
|
+ type: "edit",
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 启用/禁用
|
|
|
+ * @param {String} id id
|
|
|
+ * @param {String} status 0-禁用 1-启用
|
|
|
+ */
|
|
|
+ async changeStatus(id, status) {
|
|
|
+ await this.$confirm(`确定要改为${status === "1" ? "禁用" : "启用"}?`, {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ })
|
|
|
+ .then(async () => {
|
|
|
+ this.loading = true;
|
|
|
+ const model = {
|
|
|
+ id: id,
|
|
|
+ status: status === "1" ? "0" : "1",
|
|
|
+ };
|
|
|
+ const res = await asyncRequest.status(model);
|
|
|
+ if (res && res.code === 0) {
|
|
|
+ this.loading = false;
|
|
|
+ this.$notify.success({
|
|
|
+ title: "状态修改成功!",
|
|
|
+ message: "",
|
|
|
+ });
|
|
|
+ await this.searchList();
|
|
|
+ } else if (res && res.code >= 100 && res.code <= 104) {
|
|
|
+ await this.logout();
|
|
|
+ } else {
|
|
|
+ this.loading = false;
|
|
|
+ this.$message.warning(res.message);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ console.log("取消");
|
|
|
+ });
|
|
|
+ },
|
|
|
+ async deleteItem(id) {
|
|
|
+ await this.$confirm("确定要删除?", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning",
|
|
|
+ })
|
|
|
+ .then(async () => {
|
|
|
+ const model = {
|
|
|
+ id: id,
|
|
|
+ };
|
|
|
+ const res = await asyncRequest.delete(model);
|
|
|
+ if (res && res.code === 0) {
|
|
|
+ this.$notify.success({
|
|
|
+ title: "删除成功",
|
|
|
+ message: "",
|
|
|
+ });
|
|
|
+ this.searchList();
|
|
|
+ } else if (res && res.code >= 100 && res.code <= 104) {
|
|
|
+ await this.logout();
|
|
|
+ } else {
|
|
|
+ this.$message.warning(res.message);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ console.log("取消");
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 刷新表格
|
|
|
+ async searchList() {
|
|
|
+ if (
|
|
|
+ (this.parmValue.start !== "" && this.parmValue.end === "") ||
|
|
|
+ (this.parmValue.start == "" && this.parmValue.end != "")
|
|
|
+ ) {
|
|
|
+ this.$message.warning("开始时间和结束时间不能为空");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.loading = true;
|
|
|
+ const { code, data, message } = await asyncRequest.list(this.parmValue);
|
|
|
+ let scode = parseInt(code + "");
|
|
|
+ if (scode === 0) {
|
|
|
+ const { list, count } = data;
|
|
|
+ this.tableData = list;
|
|
|
+ this.pageInfo.total = Number(count + "");
|
|
|
+ } else if (scode >= 100 && scode <= 104) {
|
|
|
+ await this.logout();
|
|
|
+ } else {
|
|
|
+ this.tableData = [];
|
|
|
+ this.pageInfo.total = 0;
|
|
|
+ }
|
|
|
+ this.loading = false;
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+@import "~@/styles/mixin.scss";
|
|
|
+.supplierAccount {
|
|
|
+ position: relative;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ overflow: hidden;
|
|
|
+
|
|
|
+ .supplierAccount_show_box {
|
|
|
+ // position: relative;
|
|
|
+ // height: calc(100% - 50px);
|
|
|
+ // min-height: calc(100% - 50px);
|
|
|
+
|
|
|
+ display: relative;
|
|
|
+ width: 100%;
|
|
|
+ height: calc(100vh - 50px);
|
|
|
+ overflow: hidden;
|
|
|
+ text-align: left;
|
|
|
+ //左侧
|
|
|
+ .role-list {
|
|
|
+ height: 100%;
|
|
|
+ overflow-y: auto;
|
|
|
+ width: 320px;
|
|
|
+ // padding: 8px 16px;
|
|
|
+ min-height: 100%;
|
|
|
+ flex-shrink: 0;
|
|
|
+ border-right: 2px solid #dfe6ec;
|
|
|
+ @include scrollBar();
|
|
|
+ &::after {
|
|
|
+ content: "";
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ right: 0;
|
|
|
+ height: 100%;
|
|
|
+ width: 2px;
|
|
|
+ background-color: #e4e7ed;
|
|
|
+ z-index: 1;
|
|
|
+ }
|
|
|
+ .role-list__title {
|
|
|
+ color: #b4b6c0;
|
|
|
+ line-height: 32px;
|
|
|
+ }
|
|
|
+ .role-list__item {
|
|
|
+ position: relative;
|
|
|
+ white-space: nowrap;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ overflow: hidden;
|
|
|
+ height: 32px;
|
|
|
+ line-height: 32px;
|
|
|
+ padding-left: 8px;
|
|
|
+ color: rgb(48, 49, 51);
|
|
|
+ cursor: pointer;
|
|
|
+ i {
|
|
|
+ position: absolute;
|
|
|
+ right: 0;
|
|
|
+ line-height: 32px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .role-list__item.active {
|
|
|
+ color: #63cbe7;
|
|
|
+ background: #f7f7f7;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //右侧
|
|
|
+ .rule-view {
|
|
|
+ height: calc(100% - 50px);
|
|
|
+ width: calc(100% - 320px);
|
|
|
+ overflow-y: auto;
|
|
|
+ padding: 10px 16px;
|
|
|
+ @include scrollBar();
|
|
|
+ .rule-list {
|
|
|
+ border-right: 1px solid #dfe6ec;
|
|
|
+ .title {
|
|
|
+ padding: 18px 18px 12px 18px;
|
|
|
+ border-bottom: 1px dashed #dfe6ec;
|
|
|
+ font-size: 15px;
|
|
|
+ color: #000;
|
|
|
+ }
|
|
|
+ .main {
|
|
|
+ padding: 18px 18px 12px 18px;
|
|
|
+ border-bottom: 1px solid #dfe6ec;
|
|
|
+ }
|
|
|
+ .main-title {
|
|
|
+ width: 80px;
|
|
|
+ }
|
|
|
+ .main-item {
|
|
|
+ width: calc(100% - 80px);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .rule-bottom {
|
|
|
+ padding: 10px 18px 8px 0;
|
|
|
+ background: #fff;
|
|
|
+ width: calc(100% - 200px);
|
|
|
+ position: absolute;
|
|
|
+ text-align: right;
|
|
|
+ bottom: 0;
|
|
|
+ right: 0;
|
|
|
+ &::before {
|
|
|
+ content: "";
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ right: 0;
|
|
|
+ height: 2px;
|
|
|
+ width: 100%;
|
|
|
+ background-color: #e4e7ed;
|
|
|
+ z-index: 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|