| | |
| | | data |
| | | }) |
| | | } |
| | | // 验证 更改记录状态 |
| | | export function updateStatus(id) { |
| | | return request({ |
| | | url: `/api-wms/v1/operation/finish/${id}`, |
| | | method: "put", |
| | | id |
| | | }) |
| | | } |
| | | |
| | | // 获取位置列表 |
| | | export function getLocationList(data) { |
| | | return request({ |
| | | url: "/api-wms/v1/location/getLocationList", |
| | | method: "post", |
| | | data |
| | | }) |
| | | } |
| | |
| | | v-model="scope.row[item.prop]" |
| | | placeholder="请选择" |
| | | size="mini" |
| | | style="width: 63%" |
| | | @change="selProductClick" |
| | | style="width: 80%" |
| | | @change=" |
| | | (val) => { |
| | | selProductClick(val) |
| | | } |
| | | " |
| | | > |
| | | <el-option v-for="item in productNameOptions" :key="item.id" :label="item.name" :value="item"> |
| | | <el-option |
| | | v-for="item in productNameOptions" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="{ value: item.id, label: item.name, amount: item.amount, unit: item.unit }" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | // import { getProductListFromGrpc, getProductList } from "@/api/productManage/product" |
| | | import { getProductList } from "@/api/product/product" |
| | | // import SelectCommonDialog from "@/views/other/commonDialog/SelectCommonDialog" |
| | | export default { |
| | | name: "CommmonFormTableView", |
| | |
| | | infomation: {} |
| | | }, |
| | | productIndex: 0, |
| | | productNameOptions: [ |
| | | { id: 1, name: "aaaaa" }, |
| | | { id: 2, name: "bbbbbbbbbb" } |
| | | ], |
| | | productNameOptions: [], |
| | | selOptions: [ |
| | | { id: 1, name: "件" }, |
| | | { id: 2, name: "打" } |
| | |
| | | } |
| | | }, |
| | | created() { |
| | | // this.getProductList() |
| | | this.getProductList() |
| | | this.tableList = this.productTableList |
| | | }, |
| | | computed: {}, |
| | |
| | | methods: { |
| | | // 产品名称 |
| | | async getProductList() { |
| | | // let fn = this.sign == "purchase" ? getProductList : getProductListFromGrpc |
| | | let fn |
| | | await fn({ |
| | | await getProductList({ |
| | | page: 1, |
| | | pageSize: 100 |
| | | }).then((res) => { |
| | | console.log(res.data) |
| | | if (res.data.code === 200) { |
| | | if (res.data.data.list && res.data.data.list.length > 0) { |
| | | this.productList = res.data.data.list |
| | | // console.log(res.data) |
| | | if (res.code === 200) { |
| | | if (res.data && res.data.length > 0) { |
| | | this.productNameOptions = res.data |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | // 选择产品 |
| | | selProductClick(val) { |
| | | console.log("aaa") |
| | | console.log(val) |
| | | selProductClick(item) { |
| | | this.tableList.tableData.map((ite) => { |
| | | if (ite.productName.label === item.label) { |
| | | ite.productId = item.value |
| | | ite.productName = item.label |
| | | ite.amount = item.amount |
| | | ite.unit = item.unit |
| | | } |
| | | }) |
| | | console.log(this.tableList.tableData) |
| | | }, |
| | | // 选择单位 |
| | | selCommonClick(item) { |
| | |
| | | <template> |
| | | <div class="common-status"> |
| | | <div v-if="showButton" style="margin-left: 30px"> |
| | | <el-button v-if="isValidateClick" plain size="mini" @click="validateClick">验证</el-button> |
| | | <el-button plain size="mini" @click="delClick" :disabled="isDelClick">删除</el-button> |
| | | <el-button plain size="mini" disabled>打印</el-button> |
| | | </div> |
| | |
| | | isDelClick: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | isValidateClick: { |
| | | type: Boolean, |
| | | default: false |
| | | } |
| | | }, |
| | | data() { |
| | | return {} |
| | | }, |
| | | methods: { |
| | | // 验证 |
| | | validateClick() { |
| | | this.$emit("validateClick") |
| | | }, |
| | | // 删除 |
| | | delClick() { |
| | | this.$emit("delClick") |
| | | } |
| | |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span v-if="item.price">{{ "¥" + number_format(scope.row[item.prop], 2, ".", ",") }}</span> |
| | | <!-- 带点的功能 --> |
| | | <!-- 状态显示 --> |
| | | <div v-else-if="item.status"> |
| | | <!-- <span v-if="scope.row.status == '完成'" class="Badge greenSlot"></span> |
| | | <span v-else-if="scope.row.status == '草稿'" class="Badge redSlot"></span> |
| | | <span v-else-if="scope.row.status == '就绪'" class="Badge redSlot"></span> |
| | | <span v-else-if="scope.row.status == '已取消'" class="Badge yellowSlot"></span> --> |
| | | <span |
| | | class="Badge" |
| | | :class="{ |
| | | greenSlot: scope.row.status == '完成', |
| | | redSlot: scope.row.status == '已取消', |
| | | blueSlot: scope.row.status == '就绪', |
| | | graySlot: scope.row.status == '草稿' |
| | | greenSlot: scope.row.status == '4', |
| | | redSlot: scope.row.status == '5', |
| | | blueSlot: scope.row.status == '3', |
| | | graySlot: scope.row.status == '1' |
| | | }" |
| | | >{{ scope.row[item.prop] }}</span |
| | | >{{ |
| | | item.isCallMethod ? item.getCallMethod(scope.row[item.prop], scope.row) : scope.row[item.prop] |
| | | }}</span |
| | | > |
| | | </div> |
| | | <!-- 调用方法显示文字 --> |
| | |
| | | @click="selCommonClick(scope.row)" |
| | | >{{ scope.row[item.prop] }}</span |
| | | > |
| | | <span v-else-if="item.propType=='mulitple'"> |
| | | {{ scope.row[item.prop][item.propTwo]?scope.row[item.prop][item.propTwo]:'--' }} |
| | | <span v-else-if="item.propType == 'mulitple'"> |
| | | {{ scope.row[item.prop][item.propTwo] ? scope.row[item.prop][item.propTwo] : "--" }} |
| | | </span> |
| | | <span :class="item.className ? item.className : ''" v-else>{{ |
| | | scope.row[item.prop] ? scope.row[item.prop] : scope.row[item.prop] === 0 ? scope.row[item.prop] : "--" |
| | | }}</span> |
| | | |
| | | </template> |
| | | </el-table-column> |
| | | <slot name="tableButton" /> |
| | |
| | | > |
| | | <div> |
| | | <!-- <div>aaa</div> --> |
| | | <StatusCommonView :showButton="showButton" :isDelClick="isDelClick" :list="list" @delClick="delClick" /> |
| | | <StatusCommonView |
| | | :showButton="showButton" |
| | | :isValidateClick="isValidateClick" |
| | | :isDelClick="isDelClick" |
| | | :list="list" |
| | | @delClick="delClick" |
| | | @validateClick="validateClick" |
| | | /> |
| | | </div> |
| | | <div class="basic-info"> |
| | | <div class="basic-info-view"> |
| | |
| | | <el-form-item prop="companyName"> |
| | | <span slot="label">{{ workType === 1 ? "客户" : workType === 2 ? "送货地址" : "联系人" }}</span> |
| | | <el-select |
| | | v-model="editConfig.infomation.company" |
| | | v-model="editConfig.infomation.companyName" |
| | | placeholder="请选择" |
| | | size="mini" |
| | | style="width: 90%" |
| | | :disabled="!showFooter" |
| | | @change="companyChange" |
| | | > |
| | | <el-option |
| | | v-for="item in companyOptions" |
| | |
| | | style="width: 90%" |
| | | :disabled="!showFooter" |
| | | > |
| | | <el-option v-for="item in fromLocationOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | <el-option v-for="item in toLocationOptions" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | size="mini" |
| | | style="width: 90%" |
| | | :disabled="!showFooter" |
| | | @change="contacterChange" |
| | | > |
| | | <el-option v-for="item in memberOptions" :key="item.id" :label="item.username" :value="item.id"> |
| | | <el-option |
| | | v-for="item in memberOptions" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="{ value: item.id, label: item.name }" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | |
| | | <script> |
| | | import CommonFormTableView from "@/components/makepager/CommonFormTableView" |
| | | // import { addOperation } from "@/api/overview/overview" |
| | | import { getLocationList, addOperation, updateOperation, updateStatus, deleteOperation } from "@/api/overview/overview" |
| | | import { getCompanyList } from "@/api/common/other" |
| | | export default { |
| | | name: "AddOverviewDialog", |
| | |
| | | return { |
| | | visible: false, |
| | | title: "新建", |
| | | operationTypeId: 0, |
| | | infomation: {} |
| | | } |
| | | } |
| | |
| | | dialogWidth: "50%", |
| | | editConfig: this.editCommonConfig, |
| | | rules: { |
| | | client_name: [{ required: true, message: "请选择客户名称", trigger: "change" }], |
| | | number: [{ required: true, message: "请输入退款单编号", trigger: "blur" }], |
| | | refundDate: [{ required: true, message: "请选择退款日期", trigger: "change" }], |
| | | memberId: [{ required: true, message: "请选择销售负责人", trigger: "change" }], |
| | | sale_return_nunber: [{ required: true, message: "请选择销售退货单", trigger: "change" }] |
| | | sourceNumber: [{ required: true, message: "请输入来源单据", trigger: "blur" }], |
| | | operationDate: [{ required: true, message: "请选择日期", trigger: "change" }], |
| | | toLocationId: [{ required: true, message: "请选择仓库位置", trigger: "change" }], |
| | | fromLocationId: [{ required: true, message: "请选择源位置", trigger: "change" }] |
| | | }, |
| | | companyOptions: [], // 公司 |
| | | memberOptions: [], |
| | | fromLocationOptions: [], // 源位置 |
| | | toLocationOptions: [], // 仓库位置 |
| | | memberOptions: [{ id: 1, name: "管理员" }], |
| | | toLocationOptions: [], // 源位置 仓库位置 |
| | | list: [ |
| | | { label: "草稿", status: "todo" }, |
| | | { label: "正在等待", status: "todo" }, |
| | | { label: "就绪", status: "todo" }, |
| | | { label: "完成", status: "todo" } |
| | | { label: "草稿", status: "todo", value: 1 }, |
| | | { label: "正在等待", status: "todo", value: 2 }, |
| | | { label: "就绪", status: "todo", value: 3 }, |
| | | { label: "完成", status: "todo", value: 4 } |
| | | ], |
| | | showButton: true, |
| | | activeName: "first", |
| | | productTableList: {}, |
| | | tableData: [{ name: "ssss" }], |
| | | productId: 0, |
| | | isNoProduct: false, // 添加明细行时是否有产品未选择 |
| | | tableData: [], |
| | | countId: 0, |
| | | isNoProduct: true, // 添加明细行时是否有产品未选择 |
| | | showEdit: false, // 是否显示编辑按钮 |
| | | isDelClick: false, // 删除按钮是否可点击 |
| | | showFooter: false, // 是否显示取消保存 |
| | |
| | | tableColumn: [], |
| | | receiptType: this.addName, // 入库类型 |
| | | companyObj: {}, |
| | | contacterObj: {} |
| | | contacterObj: {}, |
| | | isValidateClick: false // 验证是否显示 |
| | | } |
| | | }, |
| | | created() { |
| | | this.setTableForm() |
| | | this.setBottonView() |
| | | this.setDetailTableForm() |
| | | this.activeName = this.workType === 1 ? "first" : "detail" |
| | | this.getCompanyList() |
| | | this.getLocationList() |
| | | }, |
| | | methods: { |
| | | // 获取公司列表 |
| | |
| | | } |
| | | }) |
| | | }, |
| | | // 获取仓库位置列表 |
| | | async getLocationList() { |
| | | await getLocationList({ |
| | | keyWord: "", |
| | | page: 0, |
| | | pageSize: 0 |
| | | }).then((res) => { |
| | | console.log(res) |
| | | if (res.code === 200) { |
| | | this.toLocationOptions = res.data |
| | | } |
| | | }) |
| | | }, |
| | | // 设置删除/打印/编辑是否显示 |
| | | setBottonView() { |
| | | if (this.editConfig.title === "新建") { |
| | | this.showButton = false |
| | | this.showEdit = false |
| | | this.showFooter = true |
| | | this.isValidateClick = false |
| | | } else if (this.editConfig.infomation.status === "完成") { |
| | | this.showButton = true |
| | | this.showEdit = false |
| | | this.isDelClick = true |
| | | this.showFooter = false |
| | | this.isValidateClick = false |
| | | } else if (this.editConfig.infomation.status === "已取消") { |
| | | this.showButton = true |
| | | this.showEdit = false |
| | | this.showFooter = false |
| | | this.isValidateClick = false |
| | | } else { |
| | | this.showButton = true |
| | | this.showEdit = true |
| | | this.showFooter = false |
| | | this.isValidateClick = true |
| | | } |
| | | if (this.editConfig.title === "新建") { |
| | | this.list[0].status = "active" |
| | | } else { |
| | | this.list.map((item) => { |
| | | if (item.label === this.editConfig.infomation.status) { |
| | | if (item.value === this.editConfig.infomation.status) { |
| | | item.status = "active" |
| | | } else { |
| | | item.status = "todo" |
| | |
| | | this.setTableForm() |
| | | }, |
| | | // 保存 |
| | | saveClick() { |
| | | this.saveParams() |
| | | saveClick(formName) { |
| | | this.$refs[formName].validate((valid) => { |
| | | if (valid) { |
| | | for (let i = 0; i < this.tableData.length; i++) { |
| | | if (this.tableData[i].productName.length === 0) { |
| | | this.isNoProduct = true |
| | | break |
| | | } else { |
| | | this.isNoProduct = false |
| | | } |
| | | } |
| | | if (this.isNoProduct) { |
| | | this.$message.error("请添加明细行或选择产品不能为空") |
| | | } else { |
| | | let requestUrl = this.editConfig.title === "新建" ? addOperation : updateOperation |
| | | let params = this.saveParams() |
| | | requestUrl({ |
| | | ...params |
| | | }).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("添加成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | saveParams() { |
| | | let data = this.editConfig.infomation |
| | | console.log(this.companyObj) |
| | | let companyID = 0 |
| | | let companyName = "" |
| | | let contacterID = 0 |
| | | let contacterName = "" |
| | | if (this.editConfig.title === "新建") { |
| | | companyID = this.companyObj.length === 0 ? 0 : this.companyObj.value |
| | | companyName = this.companyObj.length === 0 ? 0 : this.companyObj.label |
| | | contacterID = this.contacterObj.length === 0 ? 0 : this.contacterObj.value |
| | | contacterName = this.contacterObj.length === 0 ? 0 : this.contacterObj.label |
| | | } else { |
| | | companyID = this.companyObj.length === 0 ? data.companyID : this.companyObj.value |
| | | companyName = this.companyObj.length === 0 ? data.companyName : this.companyObj.label |
| | | contacterID = this.contacterObj.length === 0 ? data.contacterID : this.contacterObj.value |
| | | contacterName = this.contacterObj.length === 0 ? data.contacterName : this.contacterObj.label |
| | | } |
| | | let params = { |
| | | companyID: data.company.value || 0, |
| | | companyName: data.company.label || "", |
| | | contacterID: 0, |
| | | contacterName: "string", |
| | | details: [ |
| | | { |
| | | finishQuantity: 0, |
| | | productId: 0, |
| | | productName: "string", |
| | | quantity: 0 |
| | | } |
| | | ], |
| | | comment: data.comment || "", |
| | | companyID: companyID, |
| | | companyName: companyName, |
| | | contacterID: contacterID, |
| | | contacterName: contacterName, |
| | | details: this.tableData, |
| | | fromLocationId: data.fromLocationId || 0, |
| | | id: 0, |
| | | id: data.id, |
| | | number: "", |
| | | operationDate: data.operationDate || "", |
| | | operationTypeId: data.operationTypeId, |
| | | operationTypeId: this.editConfig.operationTypeId, |
| | | sourceNumber: data.sourceNumber || "", |
| | | status: 3, |
| | | toLocationId: data.toLocationId || 0 |
| | |
| | | return params |
| | | }, |
| | | // 删除 |
| | | delClick() {}, |
| | | async delClick() { |
| | | await deleteOperation(this.editConfig.infomation.id).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("删除成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | }, |
| | | // 操作列表 |
| | | setTableForm() { |
| | | this.tableData = this.editConfig.title !== "新建" ? this.editConfig.infomation.details : [] |
| | | this.productTableList = { |
| | | tableData: this.tableData, |
| | | tableColumn: [ |
| | | { label: "产品", prop: "name", productName: true, isRequird: true }, |
| | | { label: "产品", prop: "productName", productName: true, isRequird: true }, |
| | | // { label: "说明", prop: "number", input: true }, |
| | | // { label: "日期", prop: "amount", date: true, isRequird: true }, |
| | | // { label: "截止日期", prop: "price", date: true }, |
| | | { label: "完成", prop: "total", inputFloat: true }, |
| | | { label: "计量单位", prop: "total", select: true } |
| | | { label: "完成", prop: "amount", inputFloat: true }, |
| | | { label: "计量单位", prop: "unit" } |
| | | ] |
| | | } |
| | | }, |
| | | // 操作输入 |
| | | inputContent(val, prop, row) { |
| | | this.productId = row.productId |
| | | this.countId = row.countId |
| | | this.tableData.map((item) => { |
| | | if (item.productId === row.productId) { |
| | | if (item.countId === row.countId) { |
| | | item[prop] = val |
| | | } |
| | | }) |
| | |
| | | if (value === "操作") { |
| | | console.log(this.tableData) |
| | | for (let i = 0; i < this.tableData.length; i++) { |
| | | if (this.tableData[i].name.length === 0) { |
| | | this.isNoProduct = true |
| | | if (this.tableData[i].productName.length === 0) { |
| | | this.isNoProduct = false |
| | | break |
| | | } else { |
| | | this.isNoProduct = false |
| | | this.isNoProduct = true |
| | | } |
| | | } |
| | | if (!this.isNoProduct) { |
| | | this.productId++ |
| | | if (this.isNoProduct) { |
| | | this.countId++ |
| | | this.tableData.push({ |
| | | productId: this.productId, |
| | | id: 0, |
| | | countId: this.countId, |
| | | productId: "", |
| | | amount: 0, |
| | | desc: "", |
| | | name: "", |
| | | number: "", |
| | | price: 0, |
| | | total: 0 |
| | | unit: "", |
| | | productName: "" |
| | | }) |
| | | } |
| | | } else { |
| | |
| | | item[prop] = val |
| | | } |
| | | }) |
| | | }, |
| | | // 客户选择 |
| | | companyChange(val) { |
| | | console.log(val) |
| | | this.companyObj = val |
| | | }, |
| | | // 负责人选择 |
| | | contacterChange(val) { |
| | | this.contacterObj = val |
| | | }, |
| | | // 验证 |
| | | async validateClick() { |
| | | await updateStatus(this.editConfig.infomation.id).then((res) => { |
| | | console.log(res) |
| | | this.editConfig.visible = false |
| | | if (res.code === 200) { |
| | | this.$message.success("验证成功") |
| | | this.$parent.getData() |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | |
| | | let tableColumn = [ |
| | | { |
| | | label: "单号", |
| | | prop: "id", |
| | | prop: "number", |
| | | isShowColumn: true, |
| | | default: true |
| | | }, |
| | | { |
| | | label: "从", |
| | | prop: "deviceName", |
| | | prop: "from", |
| | | isShowColumn: showcol.includes("从"), |
| | | default: false |
| | | }, |
| | | { |
| | | label: "至", |
| | | prop: "id", |
| | | prop: "to", |
| | | isShowColumn: showcol.includes("至"), |
| | | default: false |
| | | }, |
| | | { |
| | | label: "联系人", |
| | | prop: "deviceId", |
| | | prop: "companyName", |
| | | isShowColumn: showcol.includes("联系人"), |
| | | default: false |
| | | }, |
| | | { |
| | | label: "负责人", |
| | | prop: "shopName", |
| | | prop: "contacterName", |
| | | isShowColumn: showcol.includes("负责人"), |
| | | default: false |
| | | }, |
| | | { |
| | | label: "日期", |
| | | prop: "preTime", |
| | | prop: "operationDate", |
| | | isShowColumn: showcol.includes("日期"), |
| | | default: false, |
| | | date: true |
| | |
| | | }, |
| | | { |
| | | label: "来源单据", |
| | | prop: "faultLevel", |
| | | prop: "sourceNumber", |
| | | isShowColumn: showcol.includes("来源单据"), |
| | | default: false |
| | | }, |
| | |
| | | width: 120, |
| | | isShowColumn: showcol.includes("状态"), |
| | | default: false, |
| | | status: true |
| | | status: true, |
| | | isCallMethod: true, |
| | | getCallMethod: this.getStatus |
| | | } |
| | | ] |
| | | return tableColumn |
| | |
| | | if (res.data.code === 200) { |
| | | const list = res.data.data.map((item) => { |
| | | return { |
| | | ...item |
| | | ...item, |
| | | from: item.fromLocation.name, |
| | | to: item.toLocation.name |
| | | } |
| | | }) |
| | | this.tableList.tableInfomation = list || [] |
| | |
| | | console.log(row) |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "编辑" |
| | | this.editConfig.operationTypeId = this.$route.params.id |
| | | this.editConfig.infomation = { ...row } |
| | | }, |
| | | // 新建 |
| | | addBtnClick() { |
| | | this.editConfig.visible = true |
| | | this.editConfig.title = "新建" |
| | | this.editConfig.operationTypeId = this.$route.params.id |
| | | this.editConfig.infomation = {} |
| | | }, |
| | | // 状态 |
| | | getStatus(val) { |
| | | return val === 1 ? "草稿" : val === 3 ? "就绪" : "完成" |
| | | } |
| | | } |
| | | } |