zhuangyunsheng 1 месяц назад
Родитель
Сommit
012d448732

+ 1 - 1
.env.development

@@ -4,8 +4,8 @@ NODE_ENV = development
 # 接口地址
 # 接口地址
 VUE_APP_ICONIFY_BASEURL = https://api.iconify.design
 VUE_APP_ICONIFY_BASEURL = https://api.iconify.design
 VUE_APP_ZEROAPI_BASEURL = http://www.qdeasydo.com
 VUE_APP_ZEROAPI_BASEURL = http://www.qdeasydo.com
-VUE_APP_MES_BASEURL = http://192.168.101.135:10160
 # VUE_APP_MES_BASEURL = http://192.168.101.93:10160
 # VUE_APP_MES_BASEURL = http://192.168.101.93:10160
+VUE_APP_MES_BASEURL = http://192.168.101.135:10160
 
 
 # 本地端口
 # 本地端口
 VUE_APP_PORT = 4400
 VUE_APP_PORT = 4400

+ 1 - 1
src/views/sales/performance/components/line.vue

@@ -4,7 +4,7 @@
             <el-radio-button v-for="(item, key) in radioDic" :key="key" :label="key">{{ item.label }}</el-radio-button>
             <el-radio-button v-for="(item, key) in radioDic" :key="key" :label="key">{{ item.label }}</el-radio-button>
         </el-radio-group>
         </el-radio-group>
         
         
-        <vxe-date-range-picker :style="radioDic[query.type].style" v-model="currentDateValue" :type="query.type" :label-format="query.type == 'quarter' && 'yyyy-Qq'" transfer @change="pickerChange"></vxe-date-range-picker>
+        <vxe-date-range-picker :style="radioDic[query.type].style" v-model="currentDateValue" :type="query.type" :label-format="query.type == 'quarter' ? 'yyyy-Qq' : undefined" transfer @change="pickerChange"></vxe-date-range-picker>
     </el-header>
     </el-header>
 
 
     <div class="echart-panel">
     <div class="echart-panel">

+ 36 - 64
src/views/sales/plan/detail.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-    <el-dialog v-model="visible" :title="titleMap[mode]" fullscreen :close-on-click-modal="false" @closed="$emit('closed')">
+    <el-dialog v-model="visible" :title="titleMap[mode]" fullscreen :z-index="2008" :close-on-click-modal="false" @closed="$emit('closed')">
         <el-form ref="formRef" :model="form" :rules="rules" label-width="100">
         <el-form ref="formRef" :model="form" :rules="rules" label-width="100">
             <el-collapse v-model="activeNames">
             <el-collapse v-model="activeNames">
                 <el-collapse-item title="基本信息" name="basic">
                 <el-collapse-item title="基本信息" name="basic">
@@ -30,22 +30,8 @@
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
                         <el-col :md="8" :xs="24">
                         <el-col :md="8" :xs="24">
-                            <el-form-item label="年份" prop="year">
-                                <el-date-picker v-model="form.year" type="year" :readonly="!!form.children.length || form.parentId != 0" :clearable="false" placeholder="请选择计划年份" />
-                            </el-form-item>
-                        </el-col>
-                        <el-col v-if="form.type == 'quarter'" :md="8" :xs="24">
-                            <el-form-item label="季度" prop="quarter">
-                                <el-select v-model="form.quarter" :clearable="false" placeholder="请选择计划季度">
-                                    <el-option v-for="item in 4" :key="item" :label="`Q${item}`" :value="item" :disabled="quarterDisabled(item)"></el-option>
-                                </el-select>
-                            </el-form-item>
-                        </el-col>
-                        <el-col v-if="form.type == 'month'" :md="8" :xs="24">
-                            <el-form-item label="月份" prop="month">
-                                <el-select v-model="form.month" :clearable="false" placeholder="请选择计划月份">
-                                    <el-option v-for="item in 12" :key="item" :label="`${item}月`" :value="item" :disabled="monthDisabled(item)"></el-option>
-                                </el-select>
+                            <el-form-item :label="pickerLabel[form.type]" prop="beginDate">
+                                <vxe-date-picker v-model="form.beginDate" :type="form.type" value-format="yyyy-MM-dd" :label-format="form.type == 'quarter' ? 'yyyy-Qq' : undefined" :start-date="parentPlan.beginDate" :end-date="parentPlan.endDate" transfer :placeholder="`请选择计划${pickerLabel[form.type]}`"></vxe-date-picker>
                             </el-form-item>
                             </el-form-item>
                         </el-col>
                         </el-col>
                         <el-col :md="8" :xs="24">
                         <el-col :md="8" :xs="24">
@@ -84,6 +70,11 @@ import XEUtils from "xe-utils";
 import API from "@/api";
 import API from "@/api";
 import store from "@/store";
 import store from "@/store";
 import { salesDic } from "@/utils/basicDic";
 import { salesDic } from "@/utils/basicDic";
+const pickerLabel = {
+    year: "年份",
+    quarter: "季度",
+    month: "月份"
+}
 
 
 const $emit = defineEmits(["success", "closed"]);
 const $emit = defineEmits(["success", "closed"]);
 const visible = ref(false);
 const visible = ref(false);
@@ -96,8 +87,11 @@ const titleMap = reactive({
     edit: "修改销售计划"
     edit: "修改销售计划"
 });
 });
 
 
-const parentType = ref(null);
-
+const parentPlan = reactive({
+    type: null,
+    beginDate: null,
+    endDate: null
+});
 const tenantName = computed(() => XEUtils.get(XEUtils.find(store.state.tenant.tenants, item => item.id == form.value.tenantId), "name"));
 const tenantName = computed(() => XEUtils.get(XEUtils.find(store.state.tenant.tenants, item => item.id == form.value.tenantId), "name"));
 const form = ref({
 const form = ref({
     id: null,
     id: null,
@@ -106,9 +100,7 @@ const form = ref({
     name: null,
     name: null,
     code: null,
     code: null,
     type: "year",
     type: "year",
-    year: moment().format("YYYY"),
-    quarter: moment().quarter(),
-    month: moment().month() + 1,
+    beginDate: moment().format("YYYY-01-01"),
     saleAmount: null,
     saleAmount: null,
     remark: null,
     remark: null,
     children: []
     children: []
@@ -116,10 +108,8 @@ const form = ref({
 const rules = reactive({
 const rules = reactive({
     tenantId: [{ required: true, message: "请选择所属租户" }],
     tenantId: [{ required: true, message: "请选择所属租户" }],
     name: [{ required: true, message: "请输入计划名称" }],
     name: [{ required: true, message: "请输入计划名称" }],
-    type: [{ required: true, message: "请选择计划类型" }],
-    year: [{ required: true, message: "请选择计划年份" }],
-    quarter: [{ required: true, message: "请选择计划季度" }],
-    month: [{ required: true, message: "请选择计划月份" }],
+    type: [{ required: true, message: `"请选择计划类型"` }],
+    beginDate: [{ required: true, message: `请选择计划${pickerLabel[form.type]}` }],
     saleAmount: [{ required: true, message: "请选择计划销售金额" }]
     saleAmount: [{ required: true, message: "请选择计划销售金额" }]
 });
 });
 
 
@@ -127,60 +117,38 @@ const setData = (parent, data, model = "add") => {
     visible.value = true;
     visible.value = true;
     mode.value = model;
     mode.value = model;
     if (parent && !XEUtils.isEmpty(parent)) {
     if (parent && !XEUtils.isEmpty(parent)) {
-        parentType.value = parent.type;
-
-        XEUtils.set(form.value, "parentId", XEUtils.get(parent, "id"));
-        XEUtils.set(form.value, "type", parent.type == "year" ? "quarter" : "month");
-        XEUtils.set(form.value, "year", moment(XEUtils.get(parent, "beginDate")).format("YYYY"));
-        XEUtils.set(form.value, "quarter", moment(XEUtils.get(parent, "beginDate")).quarter());
-        XEUtils.set(form.value, "month", moment().quarter(form.value.quarter).startOf("quarter").month() + 1);
+        XEUtils.objectEach(parentPlan, (_, key) => XEUtils.set(parentPlan, key, XEUtils.get(parent, key)));
+        if (model == "add") {
+            XEUtils.set(form.value, "parentId", XEUtils.get(parent, "id"));
+            XEUtils.set(form.value, "type", parent.type == "year" ? "quarter" : "month");
+            XEUtils.set(form.value, "beginDate", XEUtils.get(parent, "beginDate"));
+        }
     }
     }
 
 
     if (model == "edit") {
     if (model == "edit") {
-        XEUtils.objectEach(form.value, (_, key) => {
-            if (key == "year") XEUtils.set(form.value, key, moment(XEUtils.get(data, "beginDate")).format("YYYY"));
-            else if (key == "quarter") XEUtils.set(form.value, "quarter", moment(XEUtils.get(data, "beginDate")).quarter());
-            else if (key == "month") XEUtils.set(form.value, "month", moment(XEUtils.get(data, "beginDate")).month() + 1);
-            else XEUtils.set(form.value, key, XEUtils.get(data, key));
-        });
+        XEUtils.objectEach(form.value, (_, key) => XEUtils.set(form.value, key, XEUtils.get(data, key)));
+        
+        if (XEUtils.get(data, "children", []).length) {
+            XEUtils.set(parentPlan, "beginDate", XEUtils.get(data, "beginDate"));
+            XEUtils.set(parentPlan, "endDate", XEUtils.get(data, "endDate"));
+        }
     }
     }
 }
 }
 
 
 const mapRadio = computed((() => {
 const mapRadio = computed((() => {
     if (form.value.children.length) return XEUtils.pick(salesDic.planType, form.value.type);
     if (form.value.children.length) return XEUtils.pick(salesDic.planType, form.value.type);
 
 
-    if (parentType.value == "year") return XEUtils.omit(salesDic.planType, "year");
-    if (parentType.value == "quarter") return XEUtils.pick(salesDic.planType, "month");
+    if (parentPlan.type == "year") return XEUtils.omit(salesDic.planType, "year");
+    if (parentPlan.type == "quarter") return XEUtils.pick(salesDic.planType, "month");
     return salesDic.planType;
     return salesDic.planType;
 }));
 }));
 
 
-const monthDisabled = month => {
-    if (parentType.value == "quarter") return month - 1 < moment().quarter(form.value.quarter).startOf("quarter").month() || month - 1 > moment().quarter(form.value.quarter).endOf("quarter").month()
-    return false;
-};
-
-const quarterDisabled = quarter => {
-    if (form.value.children.length) return form.value.quarter !== quarter;
-    return false;
-};
-
 const formRef = ref();
 const formRef = ref();
 const submit = () => {
 const submit = () => {
     formRef.value.validate(async valid => {
     formRef.value.validate(async valid => {
         if (valid) {
         if (valid) {
-            const data = XEUtils.omit(form.value, "year", "quarter", "month");
-            let beginDate = moment(form.value.year).startOf("year").format("YYYY-MM-DD");
-            let endDate = moment(form.value.year).endOf("year").format("YYYY-MM-DD");
-            if (form.value.type == "quarter") {
-                beginDate = moment(form.value.year).quarter(form.value.quarter).startOf("quarter").format("YYYY-MM-DD");
-                endDate = moment(form.value.year).quarter(form.value.quarter).endOf("quarter").format("YYYY-MM-DD");
-            } else if (form.value.type == "month") {
-                beginDate = moment(form.value.year).month(form.value.month - 1).startOf("month").format("YYYY-MM-DD");
-                endDate = moment(form.value.year).month(form.value.month - 1).endOf("month").format("YYYY-MM-DD");
-            }
-            
-            XEUtils.set(data, "beginDate", beginDate);
-            XEUtils.set(data, "endDate", endDate);
+            const data = XEUtils.omit(form.value, "children");
+            XEUtils.set(data, "endDate", moment(form.value.beginDate).endOf(form.value.type).format("YYYY-MM-DD"));
 
 
             isSaving.value = true;
             isSaving.value = true;
             API.sales.plan[mode.value](data).then(res => {
             API.sales.plan[mode.value](data).then(res => {
@@ -206,6 +174,10 @@ defineExpose({
 .el-form .el-select :deep(.el-select__wrapper.is-disabled) {background-color: var(--el-fill-color-blank);box-shadow: 0 0 0 1px var(--el-border-color) inset;cursor: pointer;}
 .el-form .el-select :deep(.el-select__wrapper.is-disabled) {background-color: var(--el-fill-color-blank);box-shadow: 0 0 0 1px var(--el-border-color) inset;cursor: pointer;}
 .el-form .el-select :deep(.el-select__wrapper.is-disabled) .el-select__selected-item {color: var(--el-text-color-regular);}
 .el-form .el-select :deep(.el-select__wrapper.is-disabled) .el-select__selected-item {color: var(--el-text-color-regular);}
     
     
+.el-form .vxe-date-picker {width: 100%;flex-direction: row-reverse;}
+.el-form .vxe-date-picker :deep(.vxe-date-picker--suffix) {border-radius: var(--vxe-ui-base-border-radius) 0 0 var(--vxe-ui-base-border-radius);}
+.el-form .vxe-date-picker :deep(.vxe-date-picker--control-icon) {padding-left: .5em;padding-right: 0;}
+
 .el-form .el-input-number {width: 100%;}
 .el-form .el-input-number {width: 100%;}
 .el-form .el-input-number :deep(.el-input__inner) {text-align: unset;}
 .el-form .el-input-number :deep(.el-input__inner) {text-align: unset;}
 .el-form .el-input-number :deep(.el-input__suffix) {font-size: 12px;}
 .el-form .el-input-number :deep(.el-input__suffix) {font-size: 12px;}

+ 1 - 1
src/views/sales/plan/index.vue

@@ -110,7 +110,7 @@ const table_add = (parent = {}) => {
 
 
 const table_edit = ({ $grid, row }) => {
 const table_edit = ({ $grid, row }) => {
     const parent = $grid.getTreeParentRow(row);
     const parent = $grid.getTreeParentRow(row);
-
+    
     dialog.value = true;
     dialog.value = true;
     nextTick(() => planRef.value?.setData(parent, row, "edit"));
     nextTick(() => planRef.value?.setData(parent, row, "edit"));
 }
 }

+ 2 - 0
vue.config.js

@@ -4,6 +4,8 @@ module.exports = defineConfig({
 	//设置为空打包后不分更目录还是多级目录
 	//设置为空打包后不分更目录还是多级目录
 	publicPath: "/easydo/mes",
 	publicPath: "/easydo/mes",
     outputDir: "easydo/mes",
     outputDir: "easydo/mes",
+    // publicPath: "/",
+    // outputDir: "dist",
 	//build编译后存放静态文件的目录
 	//build编译后存放静态文件的目录
 	// assetsDir: "static",
 	// assetsDir: "static",