Merge branch 'master' of http://bore.pub:10439/r/ERP_override
| | |
| | | {field: 'width',width:120, title: t('order.width') ,editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'height',width:140, title: t('order.height'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'quantity',width:140, title: t('order.quantity'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'processingNote',width:200, title: t('order.processingNote'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'area',width:150, title: t('order.trueArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'grossArea',width:160, title: t('order.trueGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'computeArea',width:180, title: t('order.computeArea'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'computeGrossArea',width:200, title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'perimeter',width:200, title: t('order.perimeter'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'processingNote',width:200, title: t('order.processingNote'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'remarks',width:140, title: t('basicData.remarks'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | {field: 'shape',width:120, |
| | | title: t('order.shape'), |
| | |
| | | {field: 'edgingType',width:160, title: t('order.edgingType'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged}, |
| | | |
| | | ], |
| | | |
| | | |
| | | footerMethod ({ columns, data }) {//页脚函数 |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | |
| | | max255:"The value contains a maximum of 255 characters", |
| | | range99999Dec2: |
| | | "Please enter a number between 0 and 99999 with a maximum of two decimals", |
| | | range999999Dec2: |
| | | "Please enter a number between 0 and 999999 with a maximum of two decimals", |
| | | greater0:"Please enter an integer greater than 0", |
| | | checkoutLose:'Check fail', |
| | | saveSuccess:'save successfully', |
| | |
| | | max255:"Введите 255 символов.", |
| | | range99999Dec2: |
| | | "Введите число между 0 - 99999 и сохраните до двух десятичных знаков.", |
| | | range999999Dec2: |
| | | "Введите число между 0 - 999999 и сохраните до двух десятичных знаков.", |
| | | greater0:"Введите целое число больше 0", |
| | | checkoutLose:'Проверка не прошла', |
| | | saveSuccess:'Сохранить успешно', |
| | |
| | | max255:"最多输入255个字符", |
| | | range99999Dec2: |
| | | "请输入0-99999之间的数字,最多保留两位小数", |
| | | range999999Dec2: |
| | | "请输入0-999999之间的数字,最多保留两位小数", |
| | | greater0:"请输入大于0的整数", |
| | | checkoutLose:'校验不通过', |
| | | saveSuccess:'保存成功', |
| | |
| | | ConfirmPasswordCannotBeEmpty:'确认密码不能为空', |
| | | TheTwoPasswordsAreNotTheSame:'两次密码不相同', |
| | | OldPasswordError:'旧密码错误', |
| | | |
| | | userName:'用户名称', |
| | | changeUserName:'修改用户名称', |
| | | userNameCannotBeEmpty:'用户名称不能为空', |
| | | }, |
| | | orderBasicData:{ |
| | | order:'订单', |
| | |
| | | component: () => import('../views/system/userPassWord/UpdateUserPassWord.vue') |
| | | }, |
| | | { |
| | | path: 'updateUserName', |
| | | name: 'updateUserName', |
| | | component: () => import('../views/system/userPassWord/UpdateUserName.vue') |
| | | }, |
| | | { |
| | | name:'userPassWord', |
| | | path: '', |
| | | redirect:'/main/userPassWord/updateUserPassWord' |
| | |
| | | ] |
| | | }, |
| | | |
| | | |
| | | //sd模块 |
| | | { |
| | | path:'orderBasicData', |
| | |
| | | |
| | | const keyDown = (e) => { |
| | | // 回车则执行登录方法 enter键的ASCII是13 |
| | | if (e.keyCode == 13 || e.keyCode == 100) { |
| | | if (e.keyCode == 13 ) { |
| | | submitForm(ruleFormRef.value) |
| | | } |
| | | } |
| | |
| | | <div class="row1"> |
| | | <span>{{ item.customer_name }}</span> |
| | | <span>{{ item.order_id }}</span> |
| | | <span v-if="item.type_name.includes('中空')">中空</span> |
| | | <span v-else-if="item.type_name.includes('夹层')">夹层</span> |
| | | <span v-else-if="item.type_name.includes('夹胶')">夹胶</span> |
| | | <span v-if="item.process.includes('夹胶')">胶片</span> |
| | | <span v-else-if="item.process.includes('中空')">中空</span> |
| | | <span v-else-if="item.process.includes('百叶')">百叶</span> |
| | | <span v-else></span> |
| | | </div> |
| | | <div class="row2"> |
| | |
| | | <div class="row1"> |
| | | <span>{{ item.customer_name }}</span> |
| | | <span>{{ item.order_id }}</span> |
| | | <span v-if="item.process.includes('夹胶')">夹胶</span> |
| | | <span v-if="item.process.includes('夹胶')">胶片</span> |
| | | <span v-else-if="item.process.includes('中空')">中空</span> |
| | | <span v-else-if="item.process.includes('百叶')">百叶</span> |
| | | <span v-else></span> |
| | | </div> |
| | | |
| | |
| | | request.post(`/reportingWork/selectProcess`).then((res) => { |
| | | if (res.code == 200) { |
| | | titleSelectJson.value.processType = res.data.process |
| | | if(user.user.address!==null || user.user.address!==''){ |
| | | if(user.user.address!==null && user.user.address!==''){ |
| | | titleUploadData.value.thisProcess = user.user.address |
| | | titleUploadData.value.teamsGroupsName = user.user.userName |
| | | } |
| | |
| | | }) |
| | | |
| | | for(let item of uniqueByOrderNum){ |
| | | if(!checkSameNumForId(notFinishList,item.order_number)){ |
| | | if(!checkSameNumForId(notFinishList,item.order_number )){ |
| | | alert(1) |
| | | ElMessage.error(`${t('reportingWorks.pleaseCheckTheOrderNumber1')}':' |
| | | ${item.order_number} |
| | | ${t('reportingWorks.pleaseCheckTheOrderNumber1')}`) |
| | |
| | | const b = (row.breakageQuantity !== undefined && row.breakageQuantity !== null && row.breakageQuantity !== '' && row.breakageQuantity*1!==0) |
| | | return (a || b) |
| | | }) |
| | | if(requestDetailData.length === 0){ |
| | | if(requestDetailData.length === 0 && (route.query.reportingWorkId===undefined)){ |
| | | ElMessage.warning(t('reportingWorks.atLeastOneFinishedAndWornEligible')) |
| | | return false |
| | | } |
| | |
| | | bendRadius:[ |
| | | { |
| | | validator ({ cellValue }) { |
| | | const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/ |
| | | const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,5})(\.\d{1,2})?|999999(\.9{1,2})?)$/ |
| | | if (cellValue && !regex.test(cellValue)) { |
| | | return new Error(t('basicData.msg.range99999Dec2')) |
| | | return new Error(t('basicData.msg.range999999Dec2')) |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | }) |
| | | }else{ |
| | | console.log(dataList) |
| | | const val = getNestedProperty(dataList[result.start],result.cell) |
| | | dataList.forEach((item,index) =>{ |
| | | if(index>=result.start ){ |
| | |
| | | titleUploadData.value.icon = titleSelectJson.value.icon[0].basicName |
| | | titleUploadData.value.packType = titleSelectJson.value.packType[0].basicName |
| | | titleUploadData.value.alType = titleSelectJson.value.alType[0].basicName |
| | | titleUploadData.value.calculateType = 2 |
| | | titleUploadData.value.calculateType = 1 |
| | | const today = new Date |
| | | today.setTime(today.getTime() + (7 * 24 * 60 * 60 * 1000)) |
| | | titleUploadData.value.deliveryDate = today.getFullYear() + |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | if(item.computeArea === undefined){ |
| | | item.computeArea = area(item) |
| | | }else{ |
| | | item.computeGrossArea = item.computeArea * item.quantity |
| | | } |
| | | item.area = area(item) |
| | | item.grossArea = countArea(item) |
| | | if(titleUploadData.value.calculateType===1){ |
| | | item.computeGrossArea = parseFloat((item.computeArea*item.quantity).toFixed(2)) |
| | | }else if(titleUploadData.value.calculateType===2){ |
| | | item.computeGrossArea = item.grossArea |
| | | } |
| | | if(titleUploadData.value.calculateType===3){ |
| | | item.grossAmount=parseFloat((item.price * item.quantity).toFixed(2)) |
| | | }else{ |
| | | item.grossAmount=parseFloat((item.price * item.computeGrossArea).toFixed(2)) |
| | | |
| | | if(item.computeGrossArea === undefined){ |
| | | if(titleUploadData.value.calculateType===1){ |
| | | item.computeGrossArea = parseFloat((item.computeArea*item.quantity).toFixed(2)) |
| | | }else if(titleUploadData.value.calculateType===2){ |
| | | item.computeGrossArea = item.grossArea |
| | | } |
| | | if(titleUploadData.value.calculateType===3){ |
| | | item.grossAmount=parseFloat((item.price * item.quantity).toFixed(2)) |
| | | }else{ |
| | | item.grossAmount=parseFloat((item.price * item.computeGrossArea).toFixed(2)) |
| | | } |
| | | } |
| | | |
| | | }) |
| | |
| | | prefixIcon: 'vxe-icon-print', |
| | | name: '加工单', |
| | | children: [ |
| | | { code: 'sheet1', name: '横版-普通' }, |
| | | // { code: 'sheet1', name: '横版-普通' }, |
| | | { code: 'sheet2', name: '横版-多层明细' }, |
| | | { code: 'sheet4', name: '生产加工单纵版' }, |
| | | { code: 'sheet3', name: '浏览发货信息' }, |
| | |
| | | const exportFile = ()=>{ |
| | | const html = document.getElementById("child").innerHTML // 获取需要导出的HTML内容 |
| | | const blob = new Blob([html], { type: 'application/vnd.ms-excel' }) // 创建Blob对象 |
| | | saveAs(blob, rowClickIndex.value.orderId+".xlsx"); |
| | | saveAs(blob, rowClickIndex.value.orderId+".xls"); |
| | | } |
| | | |
| | | const reviewOrder = ()=>{ |
New file |
| | |
| | | <script setup lang="ts"> |
| | | import { reactive, ref } from 'vue' |
| | | import type { FormProps,FormInstance, FormRules } from 'element-plus' |
| | | import {ElMessage,ElMessageBox} from "element-plus"; |
| | | import request from "@/utils/request"; |
| | | import {Avatar, UserFilled} from "@element-plus/icons-vue"; |
| | | import useUserInfoStore from "@/stores/userInfo"; |
| | | import {useRoute, useRouter} from "vue-router"; |
| | | import {useI18n} from "vue-i18n"; |
| | | |
| | | const router = useRouter() |
| | | const route = useRoute() |
| | | const { t } = useI18n() |
| | | const userStore = useUserInfoStore() |
| | | //注册用户参数 |
| | | const register = reactive({ |
| | | userId: userStore.user.id, |
| | | userName: '' |
| | | }) |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | const submitForm = () => { |
| | | console.log(register.userName) |
| | | if(register.userName==""||register.userName==null){ |
| | | ElMessage.warning(t('user.userNameCannotBeEmpty')) |
| | | return |
| | | } |
| | | request.post('/user/updateUserName', register).then((res) => { |
| | | if (res.data === true) { |
| | | ElMessage.success(t('basicData.msg.saveSuccess')) |
| | | router.push("/login") |
| | | } else { |
| | | ElMessage.error(t('basicData.msg.saveFail')) |
| | | return false |
| | | } |
| | | }).catch(error => { |
| | | ElMessage.error(t('basicData.msg.ServerConnectionError')) |
| | | return false |
| | | }) |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div id="main-div"> |
| | | |
| | | <div id="register"> |
| | | <el-form |
| | | label-width="100px" |
| | | :model="register" |
| | | ref="ruleFormRef" |
| | | status-icon |
| | | :rules="rules" |
| | | > |
| | | <el-form-item :label="$t('user.userName')"> |
| | | <el-input type="text" v-model="register.userName" /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item > |
| | | <el-button |
| | | type="primary" |
| | | @click="submitForm(ruleFormRef)" |
| | | >{{ $t('basicData.save') }} |
| | | </el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | #main-div{ |
| | | width: 1000px; |
| | | height: 600px; |
| | | margin: auto; |
| | | } |
| | | h2{ |
| | | text-align: center; |
| | | width: 100vw; |
| | | margin-top: 10vh; |
| | | } |
| | | #register{ |
| | | background-color: #FAFAFA; |
| | | width: 50vw; |
| | | height: 50vh; |
| | | border-radius: 12px; |
| | | box-shadow: 0 8px 16px 0 rgba(0,0,0,0), 0 6px 5px 0 rgba(0,0,0,0.19); |
| | | display:flex; |
| | | align-items:center; |
| | | justify-content:center; |
| | | min-height: 280px; |
| | | } |
| | | .el-form{ |
| | | max-width: 300px; |
| | | } |
| | | </style> |
| | |
| | | import {Avatar, UserFilled} from "@element-plus/icons-vue"; |
| | | import useUserInfoStore from "@/stores/userInfo"; |
| | | import {useRoute, useRouter} from "vue-router"; |
| | | import {useI18n} from "vue-i18n"; |
| | | |
| | | const router = useRouter() |
| | | const route = useRoute() |
| | | const { t } = useI18n() |
| | | const userStore = useUserInfoStore() |
| | | //注册用户参数 |
| | | const register = reactive({ |
| | |
| | | <div id="div-title"> |
| | | <el-breadcrumb :separator-icon="ArrowRight"> |
| | | <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/userPassWord/updateUserPassWord' }">{{$t('user.changePassword')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/userPassWord/updateUserName' }">{{$t('user.changeUserName')}}</el-breadcrumb-item> |
| | | <el-breadcrumb-item v-show="false" @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/order/createOrder' }">{{$t('basicData.create')}}</el-breadcrumb-item> |
| | | </el-breadcrumb> |
| | | </div> |
| | |
| | | public Result updatePassWord(@RequestBody Map<String,Object> object){ |
| | | return Result.seccess( userService.updatePassWord(object)); |
| | | } |
| | | |
| | | @ApiOperation("修改用户名") |
| | | @PostMapping("/updateUserName") |
| | | public Result updateUserName(@RequestBody Map<String,Object> object){ |
| | | return Result.seccess( userService.updateUserName(object)); |
| | | } |
| | | } |
| | |
| | | Boolean userDelete(Integer id); |
| | | |
| | | Boolean updatePassWordById(Integer id,String passWord); |
| | | |
| | | Boolean updateUserNameById(Integer id,String userName); |
| | | } |
| | |
| | | |
| | | } |
| | | |
| | | @Transactional |
| | | public Boolean updateUserName(Map<String,Object> object) { |
| | | boolean saveState = false; |
| | | int userId =0; |
| | | String userName = ""; |
| | | if (object.get("userId") != null) { |
| | | userId = Integer.parseInt(object.get("userId").toString()); |
| | | } |
| | | if (object.get("userName") != null) { |
| | | userName = object.get("userName").toString(); |
| | | } |
| | | |
| | | if (userMapper.updateUserNameById(userId,userName)){ |
| | | saveState = true; |
| | | } |
| | | return saveState; |
| | | |
| | | } |
| | | |
| | | /*----------------新版本登陆*/ |
| | | public UserDTO doLogin(UserDTO userDTO) { |
| | | User user = userMapper.selectOne(new QueryWrapper<User>(). |
| | |
| | | set password=#{passWord},update_time=now() |
| | | where id=#{id} |
| | | </update> |
| | | |
| | | <update id="updateUserNameById"> |
| | | update erp_user_info.user |
| | | set user_name=#{userName},update_time=now() |
| | | where id=#{id} |
| | | </update> |
| | | </mapper> |