123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739 |
- <template>
- <div class="tenant">
- <byTable :source="sourceList.data" :pagination="sourceList.pagination" :config="config" :loading="loading" highlight-current-row
- :selectConfig="selectConfig" :table-events="{
- select: select,
- }" :action-list="[]" @get-list="getList" @moreSearch="() => (queryDialogVisible = true)">
- </byTable>
- <!--回告-->
- <el-dialog :z-index="1500" title="采购单回告" v-if="tellDialogVisible" v-model="formData.data" width="1500px" v-loading="loading">
- <el-descriptions title="基础信息" />
- <el-form label-width="auto" :rules="rules">
- <el-row>
- <el-col :span="8">
- <el-form-item label="采购单号:" :span="8">
- {{formData.data.orderId}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="配送中心:" :span="8">
- {{formData.data.deliverCenterName}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="入库时间:" :span="8">
- {{formData.data.storageTime}}
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="8">
- <el-form-item label="预计送货时间:" :span="8">
- <el-date-picker v-model="formData.data.deliveryTime" type="datetime" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
- placeholder="请选择预计送货时间" />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-descriptions title="采购单明细" />
- <el-table :data="formData.data.jdOrderDetailsList" stripe style="width: 100%">
- <!-- <el-table stripe style="width: 100%">-->
- <el-table-column prop="wareId" label="京东商品编号" width="180">
- <template #default="scope">
- <span
- :style="scope.row.productName=='' || scope.row.productName == undefined || scope.row.productName == 'undefined'?'color: red':''">{{scope.row.wareId}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="wareName" label="京东商品名称">
- <template #default="scope">
- <span
- :style="scope.row.productName=='' || scope.row.productName == undefined || scope.row.productName == 'undefined'?'color: red':''">{{scope.row.wareName}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="productName" label="产品名称" />
- <el-table-column prop="originalNum" label="采购数量" />
- <el-table-column prop="confirmNum" label="确认数量">
- <template v-slot="scope">
- <el-form-item :rules="rules['confirmNum']">
- <el-input-number :min="0" :step="1" :max="scope.row.originalNum" v-model="scope.row.confirmNum" placeholder="请输入确认数量" />
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column prop="purchasePrice" label="采购价" />
- <el-table-column prop="nonDeliveryReason" label="不满足发货原因">
- <template v-slot="scope">
- <el-form-item :rules="rules['nonDeliveryReason']">
- <el-input v-model="scope.row.nonDeliveryReason" placeholder="请输入不满足发货原因" />
- </el-form-item>
- </template>
- </el-table-column>
- </el-table>
- </el-row>
- </el-form>
- <template #footer>
- <el-button @click="tellDialogVisible = false" size="large">取 消</el-button>
- <el-button type="primary" @click="submitForm" size="large" :loading="submitLoading">采购单回告</el-button>
- </template>
- </el-dialog>
- <!--详情-->
- <el-dialog :z-index="1500" title="采购单详情" v-if="dialogVisible" v-model="formData.data" width="1500px" v-loading="loading">
- <el-descriptions title="基础信息" />
- <el-form label-width="auto" :rules="rules">
- <el-row>
- <el-col :span="8">
- <el-form-item label="京东订单号:" :span="8">
- {{formData.data.orderId}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="订购时间:" :span="8" label-position="right">
- {{formData.data.createdDate}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="供应商名称:" :span="8">
- {{formData.data.providerName}}
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="8">
- <el-form-item label="采购总金额:" :span="8">
- {{formData.data.totalPrice}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="配送中心名称:" :span="8">
- {{formData.data.deliverCenterName}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="采购员姓名:" :span="8">
- {{formData.data.purchaserName}}
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="8">
- <el-form-item label="删除状态:" :span="8">
- {{formData.data.statusName}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="是否EPT定制:" :span="8">
- {{formData.data.isEptCustomized?'是':'否'}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="订单状态:" :span="8">
- {{formData.data.stateName}}
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="8">
- <el-form-item label="完成时间:" :span="8">
- {{formData.data.completedDate}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="账期:" :span="8">
- {{formData.data.accountPeriod}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="收货负责人:" :span="8">
- {{formData.data.receiverName}}
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="8">
- <el-form-item label="收货电话:" :span="8">
- {{formData.data.warehousePhone}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="详细地址:" :span="8">
- {{formData.data.address}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="采购类型:" :span="8">
- {{formData.data.orderTypeName}}
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="8">
- <el-form-item label="订单属性:" :span="8">
- {{formData.data.orderAttributeName}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="回告状态:" :span="8">
- {{formData.data.confirmStateName}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="顾客单号:" :span="8">
- {{formData.data.customerOrderid}}
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="8">
- <el-form-item label="品种数量:" :span="8">
- {{formData.data.wareVariety}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="预计到货时间:" :span="8">
- {{formData.data.deliveryTime}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="是否可回告:" :span="8">
- {{formData.data.isCanConfirm?"可回告":"不可回告"}}
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="8">
- <el-form-item label="是否有差异:" :span="8">
- {{formData.data.isExistActualNumDif=='0'?"存在差异":"无差异"}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="是否已结算:" :span="8">
- {{formData.data.balanceStatus?"已结算":"未结算"}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="入库时间:" :span="8">
- {{formData.data.storageTime}}
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="8">
- <el-form-item label="TC转运标识:" :span="8">
- {{formData.data.tcFlagName}}
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="预约时间:" :span="8">
- {{formData.data.bookTime}}
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-descriptions title="采购单明细" />
- <el-table :data="formData.data.jdOrderDetailsList" stripe style="width: 100%">
- <!-- <el-table stripe style="width: 100%">-->
- <el-table-column prop="wareId" label="京东商品编号" width="120">
- <template #default="scope">
- <span
- :style="scope.row.productName=='' || scope.row.productName == undefined || scope.row.productName == 'undefined'?'color: red':''">{{scope.row.wareId}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="wareName" label="京东商品名称" min-width="200">
- <template #default="scope">
- <span
- :style="scope.row.productName=='' || scope.row.productName == undefined || scope.row.productName == 'undefined'?'color: red':''">{{scope.row.wareName}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="productName" label="产品名称" width="150" />
- <el-table-column prop="deliverCenterName" label="配送中心名称" width="110" />
- <el-table-column prop="purchasePrice" label="采购价" width="80" />
- <el-table-column prop="originalNum" label="原始采购数量" width="110" />
- <el-table-column prop="confirmNum" label="回告数量" width="80" />
- <el-table-column prop="actualNum" label="实收数量" width="80" />
- <el-table-column prop="nonDeliveryReason" label="不满足原因" width="100" />
- <el-table-column prop="totalPrice" label="采购总金额" width="110" />
- <el-table-column prop="storeName" label="库房名称" width="180" />
- <el-table-column prop="wareProperty" label="EPT采购单定制相关信息" width="180" />
- </el-table>
- </el-row>
- </el-form>
- <template #footer>
- <el-button @click="dialogVisible = false" size="large">取 消</el-button>
- </template>
- </el-dialog>
- <!--高级搜索-->
- <el-dialog :title="'高级检索'" v-model="queryDialogVisible" width="500px" destroy-on-close>
- <el-form :model="sourceList.pagination" label-width="100px" label-position="top">
- <el-form-item label="采购单号">
- <el-input v-model="sourceList.pagination.orderId" placeholder="请输入采购单号" oninput="value=value.replace(/[^\d.]/g,'')"/>
- </el-form-item>
- <el-form-item label="京东商品编号">
- <el-input v-model="sourceList.pagination.wareId" placeholder="请输入京东商品编号" oninput="value=value.replace(/[^\d.]/g,'')"/>
- </el-form-item>
- </el-form>
- <template #footer>
- <el-button @click="handleReset" size="large">重置</el-button>
- <el-button @click="handleQuery" type="primary" size="large">搜索</el-button>
- </template>
- </el-dialog>
- </div>
- </template>
- <script setup>
- import { ElMessage, ElMessageBox } from "element-plus";
- import byTable from "@/components/byTable/index";
- import byForm from "@/components/byForm/index";
- import { computed, nextTick, reactive, ref } from "vue";
- const { proxy } = getCurrentInstance();
- const router = useRouter();
- const loading = ref(false);
- const deliveryCenter = ref([]);
- const confirmState = ref([]);
- const orderState = ref([]);
- const blessingTypeList = ref([]);
- const submitLoading = ref(false);
- const sourceList = ref({
- data: [],
- pagination: {
- total: 0,
- pageNum: 1,
- pageSize: 10,
- },
- });
- let rules = ref({
- deliverCenterId: [
- { required: true, message: "请选择配送中心", trigger: "blur" },
- ],
- nonDeliveryReason: [
- { required: true, message: "请输入不满足发货原因", trigger: "blur" },
- ],
- confirmNum: [{ required: true, message: "请输入确认数量", trigger: "blur" }],
- });
- const queryDialogVisible = ref(false);
- const dialogVisible = ref(false);
- const tellDialogVisible = ref(false);
- let modalType = ref("add");
- const selectConfig = computed(() => {
- return [
- {
- label: "订单状态",
- prop: "state",
- data: orderState.value,
- },
- {
- label: "回告状态",
- prop: "confirmState",
- data: confirmState.value,
- },
- {
- label: "是否确认",
- prop: "businessStatus",
- data: [
- {
- label: "未确认",
- value: "0",
- },
- {
- label: "已确认",
- value: "1",
- },
- {
- label: "已回告",
- value: "2",
- },
- ],
- },
- {
- label: "是否可回告",
- prop: "isCanConfirm",
- data: [
- {
- label: "可回告",
- value: true,
- },
- {
- label: "不可回告",
- value: false,
- },
- ],
- },
- ];
- });
- const config = computed(() => {
- return [
- {
- attrs: {
- label: "京东订单号",
- align: "left",
- width: 120,
- },
- renderHTML(row) {
- return [
- {
- attrs: {
- label: row.orderId,
- type: "primary",
- text: true,
- },
- el: "button",
- click() {
- getDtl(row);
- },
- },
- ];
- },
- },
- {
- attrs: {
- label: "订购时间",
- prop: "createdDate",
- align: "left",
- width: 170,
- },
- },
- {
- attrs: {
- label: "供应商名称",
- prop: "providerName",
- align: "left",
- width: 220,
- },
- },
- {
- attrs: {
- label: "采购总金额",
- prop: "totalPrice",
- align: "left",
- width: 110,
- },
- render(totalPrice) {
- return proxy.moneyFormat(totalPrice, 2);
- },
- },
- {
- attrs: {
- label: "配送中心名称",
- prop: "deliverCenterName",
- align: "left",
- width: 110,
- },
- },
- {
- attrs: {
- label: "订单状态",
- prop: "state",
- align: "left",
- width: 80,
- },
- render(value) {
- return proxy.dictValueLabel(value, orderState.value);
- },
- },
- {
- attrs: {
- label: "回告状态",
- prop: "confirmState",
- align: "left",
- width: 80,
- },
- render(value) {
- return proxy.dictValueLabel(value, confirmState.value);
- },
- },
- {
- attrs: {
- label: "是否可回告",
- prop: "isCanConfirm",
- align: "left",
- width: 100,
- },
- render(value) {
- return value ? "可回告" : "不可回告";
- },
- },
- {
- attrs: {
- label: "详细地址",
- prop: "address",
- align: "left",
- "min-width": 200,
- },
- },
- {
- attrs: {
- label: "采购类型",
- prop: "orderTypeName",
- align: "left",
- width: 100,
- },
- },
- {
- attrs: {
- label: "是否确认",
- prop: "businessStatus",
- align: "left",
- width: 80,
- },
- render(value) {
- let label = "未确认";
- if (value == "1") {
- label = "已确认";
- } else if (value == "2") {
- label = "已回告";
- }
- return label;
- },
- },
- {
- attrs: {
- label: "操作",
- width: "150",
- align: "center",
- fixed: "right",
- },
- renderHTML(row) {
- return [
- // {
- // attrs: {
- // label: "详情",
- // type: "primary",
- // text: true,
- // },
- // el: "button",
- // click() {
- // getDtl(row);
- // },
- // },
- row.businessStatus == 0
- ? {
- attrs: {
- label: "采购单确认",
- type: "danger",
- text: true,
- },
- el: "button",
- click() {
- ElMessageBox.confirm("是否确认当前采购单状态?", "提示", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning",
- }).then(() => {
- confirmBusinessStatus(row);
- });
- },
- }
- : {},
- row.businessStatus == 1 && row.isCanConfirm
- ? {
- attrs: {
- label: "回告",
- type: "danger",
- text: true,
- },
- el: "button",
- click() {
- getTellDtl(row);
- },
- }
- : {},
- ];
- },
- },
- ];
- });
- let formData = reactive({
- data: {
- coverList: [],
- audioList: [],
- },
- });
- const formOption = reactive({
- inline: true,
- labelWidth: 100,
- itemWidth: 100,
- rules: [],
- });
- const byform = ref(null);
- const formConfig = computed(() => {
- return [
- {
- type: "input",
- prop: "orderId",
- label: "京东订单号",
- readonly: true,
- },
- {
- type: "input",
- prop: "createdDate",
- label: "订购时间",
- readonly: true,
- },
- {
- type: "input",
- label: "采购单明细,应该是个一对多还没弄",
- readonly: true,
- },
- ];
- });
- const getDictlist = async () => {
- proxy
- .getDictOne(["delivery_center", "confirmState", "OrderState"])
- .then((res) => {
- deliveryCenter.value = res["delivery_center"].map((x) => ({
- label: x.dictValue,
- value: x.dictKey,
- }));
- confirmState.value = res["confirmState"].map((x) => ({
- label: x.dictValue,
- value: x.dictKey,
- }));
- orderState.value = res["OrderState"].map((x) => ({
- label: x.dictValue,
- value: x.dictKey,
- }));
- });
- };
- const getList = async (req) => {
- sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
- loading.value = true;
- proxy.post("/jdOrder/page", sourceList.value.pagination).then((res) => {
- sourceList.value.data = res.rows;
- sourceList.value.pagination.total = res.total;
- setTimeout(() => {
- loading.value = false;
- }, 200);
- });
- };
- const openModal = () => {
- dialogVisible.value = true;
- modalType.value = "add";
- formData.data = {
- content: "",
- };
- };
- const selection = ref({
- data: [],
- });
- const select = (_selection, row) => {
- selection.value.data = _selection;
- };
- const getDtl = (row) => {
- modalType.value = "edit";
- proxy.post("/jdOrder/detail", { id: row.id }).then((res) => {
- formData.data = res;
- dialogVisible.value = true;
- });
- };
- const getTellDtl = (row) => {
- modalType.value = "edit";
- proxy.post("/jdOrder/detail", { id: row.id }).then((res) => {
- formData.data = res;
- tellDialogVisible.value = true;
- });
- };
- /**
- * 确认采购单状态
- * @param row
- */
- const confirmBusinessStatus = (row) => {
- let businessStatus = row.businessStatus == "1" ? 0 : 1;
- proxy
- .post("/jdOrder/confirmBusinessStatus", {
- id: row.id,
- businessStatus: businessStatus,
- })
- .then(
- () => {
- ElMessage({
- message: "确认成功",
- type: "success",
- });
- dialogVisible.value = false;
- submitLoading.value = false;
- getList();
- },
- (err) => {
- console.log(err);
- submitLoading.value = false;
- }
- );
- };
- //订单回告
- const submitForm = () => {
- ElMessageBox.confirm("是否确认回告当前采购单?", "提示", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning",
- }).then(() => {
- submitLoading.value = true;
- //TODO 这里应该是订单回告
- proxy.post("/jdOrder/tellBackOrer", formData.data).then(
- () => {
- ElMessage({
- message: "回告成功",
- type: "success",
- });
- tellDialogVisible.value = false;
- submitLoading.value = false;
- getList();
- },
- (err) => {
- console.log(err);
- submitLoading.value = false;
- }
- );
- });
- };
- //高级搜索
- const handleReset = () => {
- sourceList.value.pagination = {
- pageNum: sourceList.value.pagination.pageNum,
- pageSize: sourceList.value.pagination.pageSize,
- arr: [],
- };
- handleQuery();
- };
- const handleQuery = () => {
- if (
- sourceList.value.pagination.arr &&
- sourceList.value.pagination.arr.length > 1
- ) {
- sourceList.value.pagination.purchaseStartTime =
- sourceList.value.pagination.arr[0];
- sourceList.value.pagination.purchaseEndTime =
- sourceList.value.pagination.arr[1];
- }
- queryDialogVisible.value = false;
- getList();
- };
- getDictlist();
- getList();
- </script>
- <style lang='scss' scoped>
- .tenant {
- padding: 20px;
- }
- :deep(.el-form-item--default) {
- margin-bottom: 0px;
- }
- </style>
|