12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037 |
- <template>
- <div class="goodsCost pagePadding">
- <ex-table
- v-loading="loading"
- v-if="powers.some((i) => i == '001')"
- :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();
- "
- @selection="selection_change"
- >
- <template #table-header="{}">
- <div style="width: 100%">
- <el-row style="padding: 0 0 10px 80px">
- <el-col :span="6" style="width: 303px">
- <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: 135px">
- <search-brand
- :value="brandid"
- :disabled="false"
- :size="'mini'"
- :isDetail="true"
- :names="parmValue.supplierName"
- :placeholder="'商品品牌'"
- @searchChange="brandidsearchChange"
- />
- </el-col>
- <el-col :span="6" style="width: 310px; padding: 0 0 0 10px">
- <good-class
- :value="parmValue.cat_id"
- @handleChange="goods_class_change"
- :disabled="false"
- :size="searchSize"
- :isDetail="false"
- :placeholder="'分类'"
- />
- </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-row>
- <el-row>
- <el-col :span="4" style="width: 226px">
- <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: 145px; padding: 0 0 0 10px">
- <el-select
- v-model="parmValue.isonline"
- filterable
- clearable
- :size="searchSize"
- placeholder="是否上线"
- style="width: 100%"
- @change="
- pageInfo.curr = 1;
- parmValue.page = 1;
- searchList();
- "
- >
- <el-option
- v-for="item in isonlineoptions"
- :key="'isonline' + item.id"
- :label="item.name"
- :value="item.id"
- />
- </el-select>
- </el-col>
- <el-col :span="4" style="width: 135px;margin-left:10px">
- <el-select
- v-model="parmValue.is_stock"
- size="mini"
- style="width: 100%"
- placeholder="商品类型"
- clearable
- @change="
- pageInfo.curr = 1;
- parmValue.page = 1;
- searchList();
- "
- >
- <el-option
- v-for="opt in isStockOptions"
- :key="opt.value"
- :value="opt.value"
- :label="opt.label"
- />
- </el-select>
- </el-col>
- <el-col :span="3" style="margin: 0 10px">
- <search-supplier
- :size="'mini'"
- style="width: 300px"
- :value="supplierNo"
- :disabled="false"
- :placeholder="'供应商名称'"
- :names="''"
- :isDetail="false"
- :noDisabled="true"
- @searchChange="supplierChange"
- />
- </el-col>
- <el-col
- :span="3"
- class="fr"
- style="width: 66px; padding: 0 0 0 10px"
- v-if="powers.some((i) => i == '003') && !isSupertube"
- >
- <el-button
- :size="searchSize"
- type="success"
- style="float: right"
- @click="handleCreate"
- >添加</el-button>
- </el-col>
- <el-col
- :span="3"
- class="fr"
- style="width: 110px; padding: 0 0 0 10px"
- v-if="powers.some((i) => i == '055') && !isSupertube"
- >
- <el-button :size="searchSize" type="warning" style="float: right" @click="add_online">
- <i class="el-icon-circle-plus-outline"></i>
- <span>商品上线</span>
- </el-button>
- </el-col>
- </el-row>
- <el-row style="margin-top: 10px">
- <el-col :span="4" style="width: 370px">
- <el-input
- :size="searchSize"
- v-model="sinput"
- :maxlength="40"
- @blur="
- pageInfo.curr = 1;
- parmValue.page = 1;
- searchList();
- "
- placeholder="关键字"
- >
- <el-select
- v-model="select"
- slot="prepend"
- style="width: 135px"
- @change="
- pageInfo.curr = 1;
- parmValue.page = 1;
- searchList();
- "
- placeholder="关键字类型"
- >
- <el-option label="商品编号" value="1" />
- <el-option label="商品名称" value="2" />
- </el-select>
- </el-input>
- </el-col>
- <el-col :span="3" style="margin-left:10px">
- <el-select
- clearable
- v-model="parmValue.is_combind"
- placeholder="组合类型"
- style="width:225px"
- size="mini"
- @change="
- pageInfo.curr = 1;
- parmValue.page = 1;
- searchList();
- "
- >
- <el-option label="组合商品" value="1" />
- <el-option label="非组合商品" value="0" />
- </el-select>
- </el-col>
- </el-row>
- </div>
- </template>
- <template #spuCode="{ scope }">
- <div style="display:flex;align-items:center">
- <p>{{scope.row.spuCode}}</p>
- </div>
- </template>
- <template #good_thumb_img="{ scope }">
- <div
- v-if="scope.row.good_thumb_img"
- style="width: 20px; height: 20px"
- class="hover"
- v-viewer
- >
- <img
- :src="scope.row.good_thumb_img"
- style="display: inline-block; width: 100%; height: 100%"
- alt
- />
- </div>
- </template>
- <template #status="{ scope }">
- <el-tag
- :size="tablebtnSize"
- :type="
- (statusList.find((item) => item.code == scope.row.status) || {}).type || '--'
- "
- v-text="
- (statusList.find((item) => item.code == scope.row.status) || {}).name || '--'
- "
- ></el-tag>
- </template>
- <template #has_account="{ scope }">
- <el-tag
- :size="tablebtnSize"
- :type="
- (
- has_account_list.find((item) => item.code == scope.row.has_account + '') ||
- {}
- ).type || '--'
- "
- v-text="
- (
- has_account_list.find((item) => item.code == scope.row.has_account + '') ||
- {}
- ).name || '--'
- "
- ></el-tag>
- </template>
- <template #is_combind="{ scope }">
- <el-tag
- size="mini"
- :type="scope.row.is_combind === '1' ? '' : 'warning'"
- >{{scope.row.is_combind === '1' ? '组合商品' : '非组合商品'}}</el-tag>
- </template>
- <template #isonline="{ scope }">
- <el-tag
- :size="tablebtnSize"
- :type="scope.row.is_online == '0' ? 'warning' : ''"
- v-text="
- (isonlineoptions.find((item) => item.id == scope.row.is_online) || {}).name ||
- '--'
- "
- ></el-tag>
- </template>
- <template #is_stock="{ scope }">
- <el-tag
- :size="tablebtnSize"
- :type="scope.row.is_stock == '0' ? 'warning' : ''"
- v-text="
- (options4.find((item) => item.id == scope.row.is_stock) || {}).name || '--'
- "
- ></el-tag>
- </template>
- <template #operation="{ scope }">
- <el-tooltip
- v-if="powers.some((i) => i == '007') && scope.row.status !== '8'"
- effect="dark"
- content="详情"
- placement="top"
- >
- <i class="el-icon-view tb-icon" @click="getRouter('goodsCostDetail', scope.row.spuCode)"></i>
- </el-tooltip>
- <el-tooltip
- v-if="
- powers.some((i) => i == '079') && scope.row.status !== '8' && !isSupertube
- "
- effect="dark"
- content="下线商品"
- placement="top"
- >
- <i class="el-icon-download tb-icon" @click="showDonlineDlg(scope.row.spuCode)"></i>
- </el-tooltip>
- <!-- scope.row.has_account + '' == '0' && -->
- <el-tooltip
- v-if="
- (((ppowers.some((i) => i == '7') && scope.row.status + '' === '7') ||
- (ppowers.some((i) => i == '6') && scope.row.status + '' === '6') ||
- (ppowers.some((i) => i == '8') && scope.row.status + '' === '8')) &&
- (scope.row.is_stock + '' === '0' || scope.row.is_stock + '' === '1')) &&
- !isSupertube && String(scope.row.has_account) === '0'
- "
- effect="dark"
- content="修改"
- placement="top"
- >
- <i
- class="el-icon-edit tb-icon"
- @click="
- routeGoto('goodsCostDetail', {
- id: scope.row.spuCode,
- type: 'edit',
- })
- "
- ></i>
- </el-tooltip>
- <el-tooltip
- v-if="
- (ppowers.some((i) => i == '4') &&
- (scope.row.status + '' === '4' || scope.row.status + '' === '1') &&
- (scope.row.is_stock + '' === '0' || scope.row.is_stock + '' === '1')) &&
- !isSupertube && String(scope.row.has_account) === '0'
- "
- effect="dark"
- content="修改基础信息"
- placement="top"
- >
- <i
- class="el-icon-c-scale-to-original tb-icon"
- @click="wantto(scope.row.is_online, scope.row.spuCode, scope.row.status, '2')"
- ></i>
- </el-tooltip>
- <!-- scope.row.has_account + '' == '0' && -->
- <el-tooltip
- v-if="
- (ppowers.some((i) => i == '5') &&
- (scope.row.status + '' === '5' || scope.row.status + '' === '1') &&
- (scope.row.is_stock + '' === '0' || scope.row.is_stock + '' === '1')) &&
- !isSupertube && String(scope.row.has_account) === '0'
- "
- effect="dark"
- content="修改成本信息"
- placement="top"
- >
- <i
- class="el-icon-coin tb-icon"
- @click="wantto(scope.row.is_online, scope.row.spuCode, scope.row.status, '3')"
- ></i>
- </el-tooltip>
- <el-tooltip
- v-if="
- powers.some((i) => i == '010') &&
- !(scope.row.status + '' === '7' || scope.row.status + '' === '8') &&
- !isSupertube &&
- String(scope.row.createrid) !== '0'
- "
- effect="dark"
- content="复制商品"
- placement="top"
- >
- <i class="el-icon-document-copy tb-icon" @click="good_copy(scope.row.spuCode)"></i>
- </el-tooltip>
- <el-tooltip
- v-if="powers.some((i) => i == '006') && !isSupertube"
- effect="dark"
- content="删除"
- placement="top"
- >
- <i class="el-icon-delete tb-icon" @click="deleteItem(scope.row.spuCode)"></i>
- </el-tooltip>
- </template>
- </ex-table>
- <no-auth v-else></no-auth>
- <el-dialog title="下线原因" :visible.sync="dialogFormVisible" width="500px">
- <el-form
- :model="donline_form"
- :rules="donline_rules"
- ref="donline_Form"
- class="demo-ruleForm"
- label-width="80px"
- >
- <el-form-item label="下线原因" prop="offline_reason">
- <el-select
- style="width: 100%"
- v-model="donline_form.offline_reason"
- placeholder="请选择下线原因"
- >
- <el-option
- :label="item.result"
- :value="item.result_code"
- v-for="item in donline_formStOps"
- :key="item.result_code"
- ></el-option>
- </el-select>
- </el-form-item>
- <el-form-item label="下线备注" prop="offline_remark">
- <el-input
- v-model="donline_form.offline_remark"
- type="textarea"
- placeholder="请输入下线备注"
- autocomplete="off"
- ></el-input>
- </el-form-item>
- </el-form>
- <div slot="footer" class="dialog-footer">
- <el-button @click="dialogFormVisible = false">取 消</el-button>
- <el-button type="primary" @click="donlineDlg">确 定</el-button>
- </div>
- </el-dialog>
- <add-edit
- :id="''"
- :isNobleMetal="isNobleMetal"
- :sitem="changeList"
- :show-model="showModel"
- :is-detail="false"
- @refresh="showModel = false"
- @cancel="showModel = false"
- />
- </div>
- </template>
- <script>
- import asyncRequest from "@/apis/service/goodStore/goodsCost";
- import { listCol, options1, options4 } from "./columns";
- import { has_account_list, isStockOptions } from "@/assets/js/statusList";
- import mixinPage from "@/mixins/elPaginationHandle";
- import resToken from "@/mixins/resToken";
- import companyHelper from "@/mixins/companyHelper";
- import addEdit from "./components/addEdit";
- import { mapGetters } from "vuex";
- export default {
- name: "goodsCost",
- mixins: [mixinPage, resToken, companyHelper],
- components: {
- addEdit
- },
- computed: {
- //组件SIZE设置
- ...mapGetters(["tablebtnSize", "searchSize", "size", "isSupertube"]),
- powers() {
- const tran =
- this.$store.getters.btnList.find(i => i.menu_route == "goodsCost") ||
- {};
- const { action } = tran ?? {};
- return action ?? [];
- },
- ppowers() {
- const tran =
- this.$store.getters.roleProcess.find(i => i.process_type === "SPCB") ||
- {};
- const { action } = tran ?? {};
- console.log(action);
- return action || [];
- }
- },
- data() {
- var validate = (rule, value, callback) => {
- if (value == "") {
- return callback(new Error("必填项不能为空"));
- } else {
- callback();
- }
- };
- return {
- isNobleMetal: false,
- dialogFormVisible: false,
- has_account_list,
- donline_formStOps: [],
- isStockOptions,
- donline_form: {
- offline_reason: "",
- offline_remark: "",
- spuCode: ""
- },
- donline_rules: {
- offline_reason: [
- { validator: validate, required: true, trigger: "blur" }
- ],
- offline_remark: [
- { validator: validate, required: true, trigger: "blur" }
- ]
- },
- statusList: [
- {
- code: "0",
- name: "新建待审核",
- type: ""
- },
- {
- code: "1",
- name: "审核通过",
- type: "success"
- },
- {
- code: "2",
- name: "基础修改待审核",
- type: ""
- },
- {
- code: "3",
- name: "成本修改待审核",
- type: ""
- },
- {
- code: "4",
- name: "基础修改驳回",
- type: "danger"
- },
- {
- code: "5",
- name: "成本修改驳回",
- type: "danger"
- },
- {
- code: "6",
- name: "新建审核驳回",
- type: "danger"
- },
- {
- code: "7",
- name: "复制商品待编辑",
- type: "info"
- },
- {
- code: "8",
- name: "竞价商品待编辑",
- type: "info"
- }
- ],
- isonlineoptions: [
- { id: "0", name: "未上线" },
- { id: "1", name: "已上线" }
- ],
- showModel: false,
- options1,
- options4,
- loading: false,
- changeList: [],
- parmValue: {
- page: 1, // 页码
- size: 15, // 每页显示条数
- is_combind: "",
- is_stock: "",
- start: "",
- end: "",
- status: "",
- good_name: "",
- spucode: "",
- cat_id: [],
- brandid: "",
- good_type: "",
- companyNo: "",
- supplierNo: "",
- isonline: "",
- company_name: "" //创建人部门
- // creater: "",
- },
- sinput: "",
- select: "",
- // 表格 - 数据
- tableData: [],
- // 表格 - 参数
- table: {
- stripe: true,
- border: true,
- _defaultHeader_: ["setcol"]
- },
- // 表格 - 分页
- pageInfo: {
- size: 15,
- curr: 1,
- total: 0
- },
- // 表格 - 列参数
- columns: listCol,
- supplierNo: [],
- brandid: []
- };
- },
- mounted() {
- const { back } = this.$route.query;
- if (back) {
- this.parmValue = JSON.parse(back);
- const { page, size } = this.parmValue;
- // this.parmValue.start = start || last_start;
- // this.parmValue.end = end || last_end;
- if (this.parmValue.brandid.length > 0) {
- this.brandid = [this.parmValue.brandid];
- }
- this.pageInfo = {
- size: size,
- curr: page,
- total: 0
- };
- //多选条件
- this.select = this.parmValue.select;
- // this.sselect = this.parmValue.sselect;
- this.sinput = this.parmValue.sinput;
- } else {
- this.select = "2";
- // this.sselect = "创建时间"
- }
- this.select = "2";
- this.supplierNo = [];
- this.searchList();
- },
- methods: {
- handleCreate() {
- if (!this.currentIsBusinessCompany()) return;
- this.routeGoto("goodsCostDetail", { id: "add", type: "add" });
- },
- async supplierChange(e) {
- const { code, label } = e;
- this.supplierNo = code ? [code] : [];
- this.searchList();
- },
- // 获取异常原因下拉列表
- async getresultlist() {
- const res = await asyncRequest.resultlist({
- page: 1,
- size: 100,
- type: "8",
- status: "3"
- });
- if (res && res.code === 0 && res.data) {
- const { list } = res.data;
- this.donline_formStOps = list;
- } else if (res && res.code >= 100 && res.code <= 104) {
- await this.logout();
- } else {
- this.$message.warning(res.message);
- }
- },
- getRouter(toRouter, queryId) {
- if (toRouter && queryId) {
- let model = {
- id: queryId,
- type: "view"
- };
- //有多选框的条件
- this.parmValue.select = this.select;
- this.parmValue.sinput = this.sinput;
- //
- let routerModel = {
- options: JSON.parse(JSON.stringify(this.parmValue)),
- router: this.$route.path
- };
- model.preModel = JSON.stringify(routerModel);
- this.routeGoto(toRouter, model);
- } else {
- this.$message.warning("暂未找到相关流程!");
- }
- },
- restSearch() {
- this.select = "2";
- this.sinput = "";
- this.supplierNo = [];
- this.brandid = [];
- // 表格 - 分页
- this.pageInfo = {
- size: 15,
- curr: 1,
- total: 0
- };
- this.parmValue = {
- page: 1, // 页码
- size: 15, // 每页显示条数
- start: "",
- end: "",
- status: "",
- good_name: "",
- company_name: "", //创建人部门
- spucode: "",
- cat_id: [],
- brandid: "",
- good_type: "",
- isonline: "",
- companyNo: "",
- supplierNo: "",
- is_combind: ""
- };
- this.searchList();
- },
- async wantto(isonline, spuCode, ntype, wtype) {
- const { code, data, message } = await asyncRequest.checkIsUpdate({
- spuCode
- });
- if (code === 0) {
- const { is_allow_update } = data;
- if (is_allow_update + "" === "1") {
- this.routeGoto("goodsCostDetail", {
- id: spuCode,
- type: wtype === "2" ? "editBase" : wtype === "3" ? "editCoin" : ""
- });
- } else {
- if (isonline + "" === "1") {
- this.$message.warning("已上线的商品需要下线才能修改!");
- } else {
- this.$message.warning("当前商品上线流程正在进行中,请下线再操作!");
- }
- }
- } else if (code >= 100 && code <= 104) {
- await this.logout();
- } else {
- this.$message.warning(message);
- }
- },
- selection_change(e) {
- const { list } = e;
- this.changeList = list.length > 0 ? JSON.parse(JSON.stringify(list)) : [];
- },
- //商品品牌选择
- async brandidsearchChange(e) {
- const { id, code, label } = e;
- if (id) {
- this.brandid = [id];
- this.parmValue.brandid = id;
- this.parmValue.supplierName = label;
- } else {
- this.brandid = [];
- this.parmValue.brandid = "";
- this.parmValue.supplierName = "";
- }
- // this.parmValue.brandid = this.brandid.toString();
- this.pageInfo.curr = 1;
- this.parmValue.page = 1;
- await this.searchList();
- },
- // 时间
- 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();
- }
- },
- async good_copy(spuCode) {
- await this.$confirm(`确定要复制该商品?`, {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning"
- })
- .then(async () => {
- this.loading = true;
- const model = {
- spuCode: spuCode
- };
- const res = await asyncRequest.copy(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("取消");
- });
- },
- /**
- * 启用/禁用
- * @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(code) {
- await this.$confirm("确定要删除?", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning"
- })
- .then(async () => {
- const model = {
- codes: [code]
- };
- 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;
- let item = JSON.parse(JSON.stringify(this.parmValue));
- item.spucode = this.select === "1" ? this.sinput : "";
- item.good_name = this.select === "2" ? this.sinput : "";
- item.companyNo = this.select === "3" ? this.sinput : "";
- item.supplierNo = this.select === "4" ? this.sinput : "";
- item.company_name = this.select === "5" ? this.sinput : ""; // 部门
- item.cat_id =
- item.cat_id.length > 0 ? item.cat_id[item.cat_id.length - 1] : "";
- const res = await asyncRequest.list({
- ...item,
- supplierNo: Array.isArray(this.supplierNo) ? this.supplierNo[0] : "",
- needRela: true
- });
- if (res && res.code === 0 && res.data) {
- this.tableData = res.data.list;
- this.tableData.forEach(a => {
- a.cat_name = "";
- let list = a.cat_info || [];
- list.forEach((b, i) => {
- a.cat_name += i == 0 ? b.name : "/" + b.name;
- });
- });
- this.pageInfo.total = Number(res.data.count);
- } else if (res && res.code >= 100 && res.code <= 104) {
- await this.logout();
- } else {
- this.tableData = [];
- this.pageInfo.total = 0;
- }
- this.getresultlist();
- this.loading = false;
- },
- //商品分类选择
- async goods_class_change(e) {
- this.parmValue.cat_id = e;
- this.pageInfo.curr = 1;
- this.parmValue.page = 1;
- await this.searchList();
- },
- add_online() {
- if (this.changeList.length === 0) {
- this.$message.warning("至少选择一个商品!");
- return;
- }
- if (this.changeList.length > 100) {
- this.$message.warning("商品数量不能超过100!");
- return;
- }
- const categoryIds = this.changeList.map(
- ({ cat_info, is_gold_price }) => ({
- id: String(cat_info[0].id),
- isGoldPrice: String(is_gold_price)
- })
- );
- const nobleMetalIds = categoryIds.filter(
- ({ id, isGoldPrice }) => id === "6" && isGoldPrice === "1"
- );
- if (
- nobleMetalIds.length > 0 &&
- categoryIds.length !== nobleMetalIds.length
- ) {
- const h = this.$createElement;
- this.$message({
- message: h("p", null, [
- h("span", null, "勾选商品必须全部为"),
- h("i", { style: "color: red" }, "开启实时金价贵金属商品"),
- h("span", null, "或者全部为"),
- h(
- "i",
- { style: "color: red" },
- "未开启实时金价的贵金属商品和非贵金属商品"
- )
- ]),
- type: "warning",
- dangerouslyUseHTMLString: true
- });
- return;
- }
- this.isNobleMetal =
- nobleMetalIds.length > 0 && categoryIds.length === nobleMetalIds.length;
- let isok = true;
- this.changeList.forEach(e => {
- if (String(e.status) !== "1") {
- isok = false;
- }
- });
- if (!isok) {
- this.$message.warning("只有审核通过的商品可以上线!");
- return;
- }
- this.showModel = true;
- },
- //点击下线
- async showDonlineDlg(spuCode) {
- this.dialogFormVisible = true;
- this.donline_form = {
- offline_reason: "",
- offline_remark: "",
- skuCode: ""
- };
- this.donline_form.spuCode = spuCode;
- // this.donlineDlg(spuCode)
- },
- //商品下线原因 确定
- async donlineDlg() {
- await this.$refs.donline_Form.validate(async valid => {
- if (valid) {
- this.dialogFormVisible = false;
- this.get_donline(this.donline_form.spuCode);
- } else {
- console.log("error submit!!");
- return false;
- }
- });
- },
- async get_donline(spuCode) {
- await this.$confirm(`本次操作会下线本条SKU下的所有商品`, "提示", {
- // cancelButtonClass:"lzx_BtnErr",
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning",
- center: true
- })
- .then(async () => {
- this.loading = true;
- const model = this.donline_form;
- const res = await asyncRequest.goodupoffline(model);
- if (res && res.code === 0) {
- this.loading = false;
- this.$notify.success({
- title: res.message,
- 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(async () => {
- console.log("取消");
- });
- }
- }
- };
- </script>
- <style lang="scss" scoped></style>
|