zhuangyunsheng 1 mesiac pred
rodič
commit
c5e374f9b3

+ 4 - 0
.env

@@ -0,0 +1,4 @@
+# 所有环境都会加载
+
+# 标题
+VUE_APP_TITLE = EasyDo智能生产运营平台

+ 1 - 7
.env.development

@@ -1,9 +1,6 @@
 # 本地环境
 NODE_ENV = development
 
-# 标题
-VUE_APP_TITLE = EasyDo智能生产运营平台
-
 # 接口地址
 VUE_APP_ICONIFY_BASEURL = https://api.iconify.design
 VUE_APP_ZEROAPI_BASEURL = http://www.qdeasydo.com
@@ -12,7 +9,4 @@ VUE_APP_ZEROAPI_BASEURL = http://www.qdeasydo.com
 VUE_APP_MES_BASEURL = http://192.168.101.93:8080
 
 # 本地端口
-VUE_APP_PORT = 1200
-
-# 是否开启代理
-VUE_APP_PROXY = true
+VUE_APP_PORT = 1200

+ 0 - 3
.env.production

@@ -1,9 +1,6 @@
 # 生产环境
 NODE_ENV = production
 
-# 标题
-VUE_APP_TITLE = EasyDo智能生产运营平台
-
 # 接口地址
 VUE_APP_MES_BASEURL =
 VUE_APP_ZEROAPI_BASEURL =

+ 4 - 3
src/api/model/auth.js

@@ -11,17 +11,18 @@ export default {
             code: data.code,
             uuid: data.uuid
         }
-        return await http.post(`${config.API_URL}/mes/auth/login`, query);
+        return await http.post("/mes/auth/login", query);
 	},
 
     // 获取登录验证码
 	codeImg: async function () {
-        return await http.get(`${config.API_URL}/mes/auth/code`);
+        return await http.get("/mes/auth/code");
 	},
 
     user: {
 		name: "用户管理",
-        url: `${config.API_URL}/mes/sysUser`,
+        url: "/mes/sysUser",
+        
         get: async function (data = {}) {
             return await http.post(`${this.url}/getPage`, data);
         },

+ 3 - 3
src/api/model/basic.js

@@ -4,7 +4,7 @@ import http from "@/utils/request"
 export default {
     material: {
         name: "工序管理",
-        url: `${config.API_URL}/mes/processMaterial`,
+        url: "/mes/processMaterial",
         
         get: async function (data = {}) {
             return await http.post(`${this.url}/getPage`, data);
@@ -25,7 +25,7 @@ export default {
 
     qualityPlan: {
         name: "质检方案",
-        url: `${config.API_URL}/mes/qualityInspectProgram`,
+        url: "/mes/qualityInspectProgram",
         
         get: async function (data = {}) {
             return await http.post(`${this.url}/getPage`, data);
@@ -50,7 +50,7 @@ export default {
 
     customer: {
         name: "客户/供应商管理",
-        url: `${config.API_URL}/mes/customer`,
+        url: "/mes/customer",
         
         get: async function (data = {}) {
             return await http.post(`${this.url}/getPage`, data);

+ 3 - 4
src/api/model/common.js

@@ -5,15 +5,14 @@ import http from "@/utils/request"
 export default {
     iconify: {
         name: "图标查询",
-		url: `${config.API_URL}/iconify-api`,
 		get: async function (params = {}) {
-			return await http.get(`${this.url}/search`, params, config);
+			return await http.get("/iconify-api/search", params, config);
 		}
     },
 
     minio: {
 		name: "文件上传",
-		url: `${config.API_URL}/mes/file`,
+		url: `/mes/file`,
 
 		up: async function (data, config = {}) {
 			return await http.post(`${this.url}/upload`, data, config);
@@ -24,7 +23,7 @@ export default {
 		},
 
         download: async function (entityID, isTxt = false) { // url: string, isTxt: txt解码
-			return await http.get(`${config.API_URL}/minio${entityID}`, {}, {
+			return await http.get(`/minio${entityID}`, {}, {
                 responseType: "blob",
                 transformResponse: isTxt && [
                     async function (data) {

+ 2 - 2
src/api/model/process.js

@@ -4,7 +4,7 @@ import http from "@/utils/request"
 export default {
     stage: {
 		name: "工序管理",
-        url: `${config.API_URL}/mes/processStage`,
+        url: "/mes/processStage",
         
         get: async function (data = {}) {
 			return await http.post(`${this.url}/getPage`, data);
@@ -25,7 +25,7 @@ export default {
 
     line: {
 		name: "工艺路线",
-        url: `${config.API_URL}/mes/processRoute`,
+        url: "/mes/processRoute",
         
         get: async function (data = {}) {
 			return await http.post(`${this.url}/getPage`, data);

+ 1 - 1
src/api/model/production.js

@@ -4,7 +4,7 @@ import http from "@/utils/request"
 export default {
     bom: {
         name: "BOM管理",
-        url: `${config.API_URL}/mes/processBom`,
+        url: "/mes/productBom",
         
         get: async function (data = {}) {
             return await http.post(`${this.url}/getPage`, data);

+ 2 - 2
src/api/model/sales.js

@@ -4,7 +4,7 @@ import http from "@/utils/request"
 export default {
     plan: {
         name: "销售计划",
-        url: `${config.API_URL}/mes/salePlan`,
+        url: "/mes/salePlan",
         
         get: async function (data = {}) {
             return await http.post(`${this.url}/getList`, data);
@@ -25,7 +25,7 @@ export default {
 
     order: {
         name: "销售订单",
-        url: `${config.API_URL}/mes/saleOrder`,
+        url: "/mes/saleOrder",
         
         get: async function (data = {}) {
             return await http.post(`${this.url}/getPage`, data);

+ 5 - 5
src/api/model/system.js

@@ -4,7 +4,7 @@ import http from "@/utils/request"
 export default {
 	projectUser: {
 		name: "获取我的项目",
-		url: `${config.API_URL}/api/projectUserRef/getUserProjectList`,
+		url: "/api/projectUserRef/getUserProjectList",
 		get: async function () {
 			return await http.post(this.url);
 		}
@@ -12,7 +12,7 @@ export default {
 
     menu: {
         name: "菜单管理",
-		url: `${config.API_URL}/mes/sysMenu`,
+		url: "/mes/sysMenu",
 
         build: async function () {
 			return await http.post(`${this.url}/build`);
@@ -37,7 +37,7 @@ export default {
 
     role: {
         name: "角色管理",
-		url: `${config.API_URL}/mes/sysRole`,
+		url: "/mes/sysRole",
 
 		get: async function (data = {}) {
 			return await http.post(`${this.url}/getPage`, data);
@@ -62,7 +62,7 @@ export default {
 
     roleMenu: {
         name: "角色菜单管理",
-		url: `${config.API_URL}/mes/sysRolesMenus`,
+		url: "/mes/sysRolesMenus",
         
         get: async function (data = {}) {
 			return await http.post(`${this.url}/getList`, data);
@@ -75,7 +75,7 @@ export default {
 
     dept: {
         name: "部门管理",
-		url: `${config.API_URL}/mes/sysDept`,
+		url: "/mes/sysDept",
 
         get: async function (data = {}) {
 			return await http.post(`${this.url}/getList`, data);

+ 0 - 3
src/config/index.js

@@ -5,9 +5,6 @@ const DEFAULT_CONFIG = {
 	//首页地址
 	DASHBOARD_URL: "/home",
 
-	//接口地址
-	API_URL: process.env.NODE_ENV === "development" && process.env.VUE_APP_PROXY === "true" ? "" : process.env.VUE_APP_MES_BASEURL,
-
 	//请求超时
 	TIMEOUT: 30000,
 

+ 1 - 1
src/config/table.js

@@ -35,5 +35,5 @@ export default {
 }
 
 function valueIsNull(obj, key) {
-    return XEUtils.isEmpty(XEUtils.get(obj, key)) && !XEUtils.isNumber(XEUtils.get(obj, key)) && !XEUtils.isBoolean(XEUtils.get(obj, key))
+    return XEUtils.get(obj, key) === "" || XEUtils.isNull(XEUtils.get(obj, key)) || XEUtils.isUndefined(XEUtils.get(obj, key)) || XEUtils.isEmpty(XEUtils.get(obj, key))
 }

+ 1 - 1
src/directives/time.js

@@ -3,7 +3,7 @@ import tool from "@/utils/tool";
 
 let Time = {
 	getFormateTime: function (date) {
-		let timestamp = date.includes("T") && date.includes("Z") && moment(date, "YYYY-MM-DDTHH:mm:ss[Z]").valueOf() || moment(date).valueOf();
+		let timestamp = moment(date).valueOf();
 		let now = moment().valueOf();
 		let today = moment().startOf("day").valueOf();
 

+ 1 - 1
src/utils/request.js

@@ -116,7 +116,7 @@ var http = {
 		return new Promise((resolve, reject) => {
             let emptyField = []
             if (!XEUtils.isFormData(data)) {
-                emptyField = XEUtils.keys(XEUtils.pick(data, val => XEUtils.isEmpty(val) && !XEUtils.isNumber(val) && !XEUtils.isBoolean(val)))
+                emptyField = XEUtils.keys(XEUtils.pick(data, val => val === "" || XEUtils.isNull(val) || XEUtils.isUndefined(val)))
                 
                 // 更新接口 置空
                 url.endsWith("/update") && XEUtils.set(data, "emptyField", emptyField)

+ 0 - 1
src/utils/tool.js

@@ -162,7 +162,6 @@ tool.dateFormat = function (date, fmt = "YYYY-MM-DD HH:mm:ss") {
     moment.locale(tool.data.get("APP_LANG") || sysConfig.LANG);
 
     if (XEUtils.isUndefined(date) || !moment(date + "").isValid()) return "";
-    if ((date + "").includes("T") && (date + "").includes("Z")) return moment(date, "YYYY-MM-DDTHH:mm:ss[Z]").format(fmt);
 	return moment(date).format(fmt);
 }
 

+ 1 - 2
src/views/basic/customer/detail.vue

@@ -114,8 +114,7 @@ const form = ref({
     managerPhone: null,
     phone: null,
     email: null,
-    address: null,
-    remark: null
+    address: null
 });
 const rules = reactive({
     name: [{ required: true, message: "请输入客户名称" }],

+ 2 - 2
src/views/basic/qualityPlan/desc.vue

@@ -6,7 +6,7 @@
                     <el-descriptions :column="3" label-width="140" border>
                         <el-descriptions-item label="方案名称" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.name }}</el-descriptions-item>
                         <el-descriptions-item label="方案编号" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.code }}</el-descriptions-item>
-                        <el-descriptions-item label="添加时间" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ $TOOL.dateFormat(descData.createTime) }}</el-descriptions-item>
+                        <el-descriptions-item label="添加时间" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.createTime }}</el-descriptions-item>
                         <el-descriptions-item v-if="!descData.reviewUserName" label="审批状态" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ XEUtils.get(reviewStatusDic, descData.reviewStatus, descData.reviewStatus) }}</el-descriptions-item>
                         <el-descriptions-item v-if="descData.reviewUserName && mode == 'approval'" label="审批人员" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.reviewUserName }}</el-descriptions-item>
                         <el-descriptions-item label="质检人员" :span="ismobile ? 3 : 1" label-align="right">{{ descData.inspectUserName }}</el-descriptions-item>
@@ -26,7 +26,7 @@
                     <el-descriptions v-if="mode == 'detail'" :column="3" label-width="140" border>
                         <el-descriptions-item label="审批状态" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ XEUtils.get(reviewStatusDic, descData.reviewStatus, descData.reviewStatus) }}</el-descriptions-item>
                         <el-descriptions-item label="审批人员" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.reviewUserName }}</el-descriptions-item>
-                        <el-descriptions-item label="审批时间" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ $TOOL.dateFormat(descData.reviewTime) }}</el-descriptions-item>
+                        <el-descriptions-item label="审批时间" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.reviewTime }}</el-descriptions-item>
                         <el-descriptions-item label="审批意见" :span="3" label-align="right">{{ descData.reviewReason }}</el-descriptions-item>
                     </el-descriptions>
 

+ 1 - 1
src/views/process/line/desc.vue

@@ -6,7 +6,7 @@
                     <el-descriptions :column="3" label-width="140" border>
                         <el-descriptions-item label="工艺路线名称" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.name }}</el-descriptions-item>
                         <el-descriptions-item label="工艺路线编号" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.code }}</el-descriptions-item>
-                        <el-descriptions-item label="添加时间" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ $TOOL.dateFormat(descData.createTime) }}</el-descriptions-item>
+                        <el-descriptions-item label="添加时间" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ descData.createTime }}</el-descriptions-item>
                         <el-descriptions-item label="工艺路线状态" :span="ismobile ? 3 : 1" label-align="right" min-width="120">{{ XEUtils.get(statusDic, descData.status, descData.status) }}</el-descriptions-item>
                         <el-descriptions-item label="时间单位" :span="ismobile ? 3 : 1" label-align="right">{{ XEUtils.get(processDic.timeUnit, descData.timeUnit, descData.timeUnit) }}</el-descriptions-item>
                         <el-descriptions-item label="版本号" :span="ismobile ? 3 : 1" label-align="right">{{ descData.version }}</el-descriptions-item>

+ 1 - 0
src/views/production/bom/detail.vue

@@ -122,6 +122,7 @@ const submit = () => {
                 XEUtils.set(data, "materialName", form.value.material.name);
                 XEUtils.set(data, "materialCode", form.value.material.code);
                 XEUtils.set(data, "childrenList", childrenList);
+                form.value.parentId !== 0 && mode.value == "add" && (data.remark === "" || XEUtils.isNull(data.remark) || XEUtils.isUndefined(data.remark)) && XEUtils.set(data, "emptyField", ["remark"]);
 
                 isSaving.value = true;
                 API.production.bom[mode.value](data).then(res => {

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

@@ -36,7 +36,6 @@ const formatStatus = row => {
     return "executing";
 }
 
-
 const selectConfig = reactive({
     options: salesDic.planType,
     events: {
@@ -45,24 +44,24 @@ const selectConfig = reactive({
 });
 
 const daterangeConfig = reactive({
-    resetValue: () => [moment().startOf("year").format("YYYY-MM-DD HH:mm:ss"), moment().endOf("day").format("YYYY-MM-DD HH:mm:ss")],
+    resetValue: () => [moment().startOf("year").format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")],
     props: {
         type: "daterange",
         startPlaceholder: "开始日期",
         endPlaceholder: "结束日期",
-        format: "YYYY-MM-DD"
+        valueFormat: "YYYY-MM-DD"
     }
 });
 
 const formConfig = reactive({
     data: {
-        createTime: [moment().startOf("year").format("YYYY-MM-DD HH:mm:ss"), moment().endOf("day").format("YYYY-MM-DD HH:mm:ss")]
+        beginDate: [moment().startOf("year").format("YYYY-MM-DD"), moment().format("YYYY-MM-DD")]
     },
     items: [
         mapFormItemInput("nameLike", "计划名称"),
         mapFormItemInput("codeLike", "计划编号"),
         mapFormItemSelect("type", "计划类型", selectConfig),
-        mapFormItemDatePicker("createTime", "创建日期", daterangeConfig)
+        mapFormItemDatePicker("beginDate", "计划开始日期", daterangeConfig)
     ]
 });
 
@@ -72,10 +71,11 @@ const options = reactive({
         { column: "nameLike" },
         { column: "codeLike" },
         { column: "type" },
-        { column: "createTimeBegin", field: "createTime[0]" },
-        { column: "createTimeEnd", field: "createTime[1]" }
+        { column: "beginDateBegin", field: "beginDate[0]" },
+        { column: "beginDateEnd", field: "beginDate[1]" }
     ],
     treeConfig: { transform: true },
+    pagerConfig : { enabled: false },
     columns: [
         { type: "seq", fixed: "left", width: 80 },
         { type: "html", field: "name", title: "计划名称", fixed: "left", minWidth: 160, treeNode: true, headerAlign: "center", align: "left", sortable: true },

+ 1 - 1
src/views/system/user/detail.vue

@@ -105,7 +105,7 @@ const submit = () => {
     formRef.value.validate(valid => {
         if (valid) {
             const data = XEUtils.omit(form.value, "roleList", "features");
-            const features = XEUtils.pick(form.value.features, val => !XEUtils.isEmpty(val));
+            const features = XEUtils.omit(form.value.features, val => val === "" || XEUtils.isNull(val) || XEUtils.isUndefined(val));
             XEUtils.set(data, "roleList", XEUtils.map(form.value.roleList, id => ({ id })));
             XEUtils.set(data, "features", XEUtils.toJSONString(features));
 

+ 5 - 3
src/vxeTable.js

@@ -8,8 +8,8 @@ import ExcelJS from "exceljs";
 import "vxe-pc-ui/lib/style.css";
 import "vxe-table/lib/style.css";
 import "@vxe-ui/plugin-render-element/dist/style.css";
-// 黑夜模式
-localStorage.getItem("APP_DARK") && VxeUITable.VxeUI.setTheme("dark");
+
+VxeUI.use(VxeUIPluginRenderElement).use(VxeUIPluginExportXLSX, { ExcelJS });
 
 // 自定义renderer
 import tableSearch from "@/components/scTable/renderer/table-search";
@@ -48,10 +48,12 @@ VxeUI.renderer.mixin({
         }
     }
 })
-VxeUI.use(VxeUIPluginRenderElement).use(VxeUIPluginExportXLSX, { ExcelJS });
 
 export default {
 	install(app) {
         app.use(VxeUI).use(VxeUITable);
+
+        // 黑夜模式
+        localStorage.getItem("APP_DARK") && VxeUITable.VxeUI.setTheme("dark");
 	}
 }