¶Ô±ÈÐÂÎļþ |
| | |
| | | import { axios } from '@/utils/request' |
| | | |
| | | /** |
| | | * æ¥è¯¢æ§å¶å±æ§è§åæç» |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRuleDetailPage (parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRuleDetail/page', |
| | | method: 'get', |
| | | params: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * æ§å¶å±æ§è§åæç»å表 |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRuleDetailList (parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRuleDetail/list', |
| | | method: 'get', |
| | | params: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * æ·»å æ§å¶å±æ§è§åæç» |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRuleDetailAdd (parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRuleDetail/add', |
| | | method: 'post', |
| | | data: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * ç¼è¾æ§å¶å±æ§è§åæç» |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRuleDetailEdit (parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRuleDetail/edit', |
| | | method: 'post', |
| | | data: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * å 餿§å¶å±æ§è§åæç» |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRuleDetailDelete (parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRuleDetail/delete', |
| | | method: 'post', |
| | | data: parameter |
| | | }) |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å¯¼åºæ§å¶å±æ§è§åæç»çExcelæä»¶ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRuleDetailToExcel (parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRuleDetail/toExcel', |
| | | method: 'get', |
| | | params: parameter, |
| | | responseType: 'blob' |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * 导å
¥æ§å¶å±æ§è§åæç»çExcelæä»¶ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRuleDetailImportExcel (data, parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRuleDetail/importExcel', |
| | | method: 'post', |
| | | data: data, |
| | | params: parameter |
| | | |
| | | }) |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ä¸è½½æ§å¶å±æ§è§åæç»çExcel导å
¥æ¨¡æ¿ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRuleDetailDownloadExcelTemplate(parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRuleDetail/downloadExcelTemplate', |
| | | method: 'get', |
| | | params: parameter, |
| | | responseType: 'blob' |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import { axios } from '@/utils/request' |
| | | |
| | | /** |
| | | * æ¥è¯¢æ§å¶å±æ§è§å |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRulePage (parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRule/page', |
| | | method: 'get', |
| | | params: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * æ§å¶å±æ§è§åå表 |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRuleList (parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRule/list', |
| | | method: 'get', |
| | | params: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * æ·»å æ§å¶å±æ§è§å |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRuleAdd (parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRule/add', |
| | | method: 'post', |
| | | data: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * ç¼è¾æ§å¶å±æ§è§å |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRuleEdit (parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRule/edit', |
| | | method: 'post', |
| | | data: parameter |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * å 餿§å¶å±æ§è§å |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRuleDelete (parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRule/delete', |
| | | method: 'post', |
| | | data: parameter |
| | | }) |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å¯¼åºæ§å¶å±æ§è§åçExcelæä»¶ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRuleToExcel (parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRule/toExcel', |
| | | method: 'get', |
| | | params: parameter, |
| | | responseType: 'blob' |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * 导å
¥æ§å¶å±æ§è§åçExcelæä»¶ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRuleImportExcel (data, parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRule/importExcel', |
| | | method: 'post', |
| | | data: data, |
| | | params: parameter |
| | | |
| | | }) |
| | | } |
| | | |
| | | |
| | | /** |
| | | * ä¸è½½æ§å¶å±æ§è§åçExcel导å
¥æ¨¡æ¿ |
| | | * |
| | | * @author ly |
| | | */ |
| | | export function WmsControlRuleDownloadExcelTemplate(parameter) { |
| | | return axios({ |
| | | url: '/WmsControlRule/downloadExcelTemplate', |
| | | method: 'get', |
| | | params: parameter, |
| | | responseType: 'blob' |
| | | }) |
| | | } |
| | | |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-modal |
| | | title="æ°å¢æ§å¶å±æ§è§å" |
| | | :width="900" |
| | | :visible="visible" |
| | | :confirmLoading="confirmLoading" |
| | | @ok="handleSubmit" |
| | | @cancel="handleCancel"> |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-form :form="form"> |
| | | <a-form-item label="è§åç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥è§åç¼å·" v-decorator="['ruleCode', {rules: [{required: true, message: '请è¾å
¥è§åç¼å·ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="è§ååç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥è§ååç§°" v-decorator="['ruleName', {rules: [{required: true, message: '请è¾å
¥è§ååç§°ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="è§åæè¿°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥è§åæè¿°" v-decorator="['ruleDesc']" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¯å¦ç¦ç¨" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: 'è¯·éæ©æ¯å¦ç¦ç¨ï¼' }], valuePropName: 'checked'}]" /> |
| | | </a-form-item> |
| | | </a-form> |
| | | </a-spin> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import { |
| | | WmsControlRuleAdd |
| | | } from '@/api/modular/main/WmsBase/WmsControlRuleManage' |
| | | export default { |
| | | data () { |
| | | return { |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 15 } |
| | | }, |
| | | visible: false, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this) |
| | | } |
| | | }, |
| | | methods: { |
| | | moment, |
| | | // åå§åæ¹æ³ |
| | | add (record) { |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | |
| | | }); |
| | | }, |
| | | /** |
| | | * æäº¤è¡¨å |
| | | */ |
| | | handleSubmit () { |
| | | const { form: { validateFields } } = this |
| | | this.confirmLoading = true |
| | | validateFields((errors, values) => { |
| | | if (!errors) { |
| | | for (const key in values) { |
| | | if (typeof (values[key]) === 'object') { |
| | | values[key] = JSON.stringify(values[key]) |
| | | } |
| | | } |
| | | WmsControlRuleAdd(values).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('æ°å¢æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', values) |
| | | this.handleCancel() |
| | | } else { |
| | | this.$message.error('æ°å¢å¤±è´¥ï¼' + JSON.stringify(res.message)) |
| | | } |
| | | }).finally((res) => { |
| | | this.confirmLoading = false |
| | | }) |
| | | } else { |
| | | this.confirmLoading = false |
| | | } |
| | | }) |
| | | }, |
| | | handleCancel () { |
| | | this.form.resetFields() |
| | | this.visible = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <!-- @ok="handleSubmit" --> |
| | | <a-modal |
| | | title="æ§å¶å±æ§è§åæç»" |
| | | :width="900" |
| | | :visible="visible" |
| | | :confirmLoading="confirmLoading" |
| | | @cancel="handleCancel" |
| | | > |
| | | <a-spin :spinning="confirmLoading"> |
| | | <control-rule-detail ref="controlRuleDetail" @ok="handleOk" /> |
| | | </a-spin> |
| | | </a-modal> |
| | | |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import { WmsControlRuleEdit } from '@/api/modular/main/WmsBase/WmsControlRuleManage' |
| | | |
| | | import ControlRuleDetail from '@/views/main/WmsBase/WmsControlRuleDetail/index.vue' |
| | | |
| | | export default { |
| | | components: { |
| | | ControlRuleDetail |
| | | }, |
| | | data() { |
| | | return { |
| | | Id: 0, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 15 } |
| | | }, |
| | | record: {}, |
| | | visible: false, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this) |
| | | } |
| | | }, |
| | | methods: { |
| | | moment, |
| | | // åå§åæ¹æ³ |
| | | edit(record) { |
| | | this.visible = true |
| | | this.Id = record.id |
| | | this.$nextTick(() => {}) |
| | | //深度æ·è´ ç§»é¤VUEççå¬ï¼é²æ¢INDEX页é¢å¼åå¨ |
| | | this.record = JSON.parse(JSON.stringify(record)) |
| | | this.$nextTick(() => { |
| | | this.form.setFieldsValue({ |
| | | id: record.id, |
| | | ruleCode: record.ruleCode, |
| | | ruleName: record.ruleName, |
| | | ruleDesc: record.ruleDesc, |
| | | isDisabled: record.isDisabled |
| | | }) |
| | | }) |
| | | }, |
| | | handleOk(){ |
| | | |
| | | }, |
| | | handleSubmit() { |
| | | const { |
| | | form: { validateFields } |
| | | } = this |
| | | this.confirmLoading = true |
| | | validateFields((errors, values) => { |
| | | if (!errors) { |
| | | for (const key in values) { |
| | | if (values[key] == null) continue |
| | | if (typeof values[key] === 'object') { |
| | | values[key] = JSON.stringify(values[key]) |
| | | this.record[key] = values[key] |
| | | } else { |
| | | this.record[key] = values[key] |
| | | } |
| | | } |
| | | WmsControlRuleEdit(this.record) |
| | | .then(res => { |
| | | if (res.success) { |
| | | this.$message.success('ç¼è¾æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', this.record) |
| | | this.handleCancel() |
| | | } else { |
| | | this.$message.error('ç¼è¾å¤±è´¥ï¼' + JSON.stringify(res.message)) |
| | | } |
| | | }) |
| | | .finally(res => { |
| | | this.confirmLoading = false |
| | | }) |
| | | } else { |
| | | this.confirmLoading = false |
| | | } |
| | | }) |
| | | }, |
| | | handleCancel() { |
| | | this.form.resetFields() |
| | | this.visible = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-modal |
| | | title="ç¼è¾æ§å¶å±æ§è§å" |
| | | :width="900" |
| | | :visible="visible" |
| | | :confirmLoading="confirmLoading" |
| | | @ok="handleSubmit" |
| | | @cancel="handleCancel" |
| | | > |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-form :form="form"> |
| | | <a-form-item label="è§åç¼å·" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input |
| | | placeholder="请è¾å
¥è§åç¼å·" |
| | | v-decorator="['ruleCode', { rules: [{ required: true, message: '请è¾å
¥è§åç¼å·ï¼' }] }]" |
| | | /> |
| | | </a-form-item> |
| | | <a-form-item label="è§ååç§°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input |
| | | placeholder="请è¾å
¥è§ååç§°" |
| | | v-decorator="['ruleName', { rules: [{ required: true, message: '请è¾å
¥è§ååç§°ï¼' }] }]" |
| | | /> |
| | | </a-form-item> |
| | | <a-form-item label="è§åæè¿°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥è§åæè¿°" v-decorator="['ruleDesc']" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¯å¦ç¦ç¨" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-switch |
| | | v-decorator="[ |
| | | 'isDisabled', |
| | | { rules: [{ required: true, message: 'è¯·éæ©æ¯å¦ç¦ç¨ï¼' }], valuePropName: 'checked' } |
| | | ]" |
| | | /> |
| | | </a-form-item> |
| | | <a-form-item v-show="false"><a-input v-decorator="['id']"/></a-form-item> |
| | | </a-form> |
| | | </a-spin> |
| | | </a-modal> |
| | | |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import { WmsControlRuleEdit } from '@/api/modular/main/WmsBase/WmsControlRuleManage' |
| | | export default { |
| | | data() { |
| | | return { |
| | | Id: 0, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 15 } |
| | | }, |
| | | record: {}, |
| | | visible: false, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this) |
| | | } |
| | | }, |
| | | methods: { |
| | | moment, |
| | | // åå§åæ¹æ³ |
| | | edit(record) { |
| | | this.visible = true |
| | | this.Id = record.id |
| | | this.$nextTick(() => {}) |
| | | //深度æ·è´ ç§»é¤VUEççå¬ï¼é²æ¢INDEX页é¢å¼åå¨ |
| | | this.record = JSON.parse(JSON.stringify(record)) |
| | | this.$nextTick(() => { |
| | | this.form.setFieldsValue({ |
| | | id: record.id, |
| | | ruleCode: record.ruleCode, |
| | | ruleName: record.ruleName, |
| | | ruleDesc: record.ruleDesc, |
| | | isDisabled: record.isDisabled |
| | | }) |
| | | }) |
| | | }, |
| | | handleSubmit() { |
| | | const { |
| | | form: { validateFields } |
| | | } = this |
| | | this.confirmLoading = true |
| | | validateFields((errors, values) => { |
| | | if (!errors) { |
| | | for (const key in values) { |
| | | if (values[key] == null) continue |
| | | if (typeof values[key] === 'object') { |
| | | values[key] = JSON.stringify(values[key]) |
| | | this.record[key] = values[key] |
| | | } else { |
| | | this.record[key] = values[key] |
| | | } |
| | | } |
| | | WmsControlRuleEdit(this.record) |
| | | .then(res => { |
| | | if (res.success) { |
| | | this.$message.success('ç¼è¾æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', this.record) |
| | | this.handleCancel() |
| | | } else { |
| | | this.$message.error('ç¼è¾å¤±è´¥ï¼' + JSON.stringify(res.message)) |
| | | } |
| | | }) |
| | | .finally(res => { |
| | | this.confirmLoading = false |
| | | }) |
| | | } else { |
| | | this.confirmLoading = false |
| | | } |
| | | }) |
| | | }, |
| | | handleCancel() { |
| | | this.form.resetFields() |
| | | this.visible = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-modal |
| | | :width="850" |
| | | :destroyOnClose="true" |
| | | :visible="visible" |
| | | :forceRender="true" |
| | | title="æ¹é导å
¥" |
| | | cancelText="åæ¶ä¸ä¼ " |
| | | okText="å¼å§ä¸ä¼ " |
| | | @cancel="handleCancel" |
| | | @ok="handleSubmit"> |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-row :span="24"> |
| | | <span>è¯·éæ©è¦å¯¼å
¥çæ°æ®æä»¶ï¼Excelæ ¼å¼ï¼</span> |
| | | </a-row> |
| | | <p></p> |
| | | <a-row> |
| | | <a-col :span="16"> |
| | | <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload"> |
| | | <a-icon style="font-size: 40px;" type="cloud-upload" /> |
| | | </a-upload-dragger> |
| | | </a-col> |
| | | <!--<a-col :span="8"> |
| | | <span>导å
¥æ¨¡å¼ï¼</span> |
| | | <a-select |
| | | style="width: 130px" |
| | | placeholder="è¯·éæ©å¯¼å
¥æ¨¡å¼" |
| | | v-model="importExcelType"> |
| | | <a-select-option |
| | | v-for="(item,index) in importExcelTypeData" |
| | | :key="index" |
| | | :value="item.code">{{ item.name }} |
| | | </a-select-option> |
| | | </a-select> |
| | | </a-col>--> |
| | | </a-row> |
| | | <a-row :span="24"> |
| | | <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed"> |
| | | ç¹å»æ¥çæä»¶ä¸ä¼ è¦æ± |
| | | </a-button>--> |
| | | <span>ã</span> |
| | | <a-button style="width: 90px;text-align: left;" @click="wmsControlRuleDownloadExcelTemplate" type="link">ä¸è½½å¯¼å
¥æ¨¡æ¿</a-button>ï¼å¡«åå¹¶ä¸ä¼ |
| | | <span>ã</span> |
| | | <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed"> |
| | | æ¶èµ· |
| | | </a-button> |
| | | </a-row> |
| | | <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24"> |
| | | <a-breadcrumb> |
| | | <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">æä»¶ä¸ä¼ è¦æ±</a-breadcrumb-item> |
| | | </a-breadcrumb> |
| | | </a-row> |
| | | <pre v-show="detailed"> |
| | | <div v-html="demandText"></div> |
| | | </pre> |
| | | <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table> |
| | | <pre v-show="detailed"> |
| | | <div v-html="columnText"></div> |
| | | </pre> |
| | | </a-spin> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util' |
| | | |
| | | import { WmsControlRuleImportExcel, WmsControlRuleDownloadExcelTemplate} from '@/api/modular/main/WmsBase/WmsControlRuleManage' |
| | | import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage' |
| | | export default { |
| | | components: { |
| | | }, |
| | | data() { |
| | | return { |
| | | visible: false, |
| | | detailed: false, |
| | | confirmLoading: false, |
| | | fileList: [], |
| | | importExcelTypeData: [], |
| | | importExcelType: '1', |
| | | uploadFile: null, |
| | | columns: [], |
| | | dataList: [], |
| | | demandText:'', |
| | | columnText: '' |
| | | } |
| | | }, |
| | | methods: { |
| | | index() { |
| | | this.visible = true; |
| | | this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type') |
| | | this.demandText = parseDemandText("wmsControlRuleDownloadExcelTemplate") |
| | | window.downloadFile = this.wmsControlRuleDownloadExcelTemplate; |
| | | this.getTable(); |
| | | }, |
| | | showDemand() { |
| | | this.detailed = !this.detailed; |
| | | }, |
| | | customRequest(document) { |
| | | this.uploadFile = document |
| | | }, |
| | | getTable() { |
| | | sysExcelTemplateGetColumnList({className: "WmsControlRule"}).then(res => |
| | | { |
| | | if (res.success) { |
| | | this.columns =[]; |
| | | this.dataList = [{}]; |
| | | res.data.forEach(x => { |
| | | this.columns.push({ |
| | | dataIndex: x.columnName, |
| | | key: x.columnName, |
| | | title: x.columnComment |
| | | }); |
| | | this.dataList[0][x.columnName] = x.isRequired ? "å¿
å¡«" : "éå¿
å¡«" |
| | | }); |
| | | this.columnText = parseExcelFieldText(res.data); |
| | | } |
| | | }); |
| | | }, |
| | | beforeUpload(fileInfo) { |
| | | let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']); |
| | | if (!res.success) { |
| | | this.$message.warning(res.msg) |
| | | return false |
| | | } |
| | | setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000) |
| | | }, |
| | | handleChange(fileInfo) { |
| | | if (fileInfo.file.status === 'error') { |
| | | fileInfo.fileList.splice(0, 1) |
| | | } |
| | | if (fileInfo.file.status === 'done') { |
| | | if (fileInfo.fileList.length > 1) { |
| | | fileInfo.fileList.splice(0, 1) |
| | | } |
| | | this.fileList = fileInfo.file |
| | | } |
| | | }, |
| | | handleSubmit() { |
| | | this.confirmLoading = true |
| | | const formData = new FormData() |
| | | formData.append('file', this.uploadFile.file) |
| | | WmsControlRuleImportExcel(formData, {importExcelType: this.importExcelType}).then(res => { |
| | | this.$message.success('æä½æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', []) |
| | | this.handleCancel() |
| | | }).finally((res)=>{this.confirmLoading = false}) |
| | | }, |
| | | handleCancel() { |
| | | this.visible = false |
| | | this.detailed = false |
| | | }, |
| | | wmsControlRuleDownloadExcelTemplate() { |
| | | WmsControlRuleDownloadExcelTemplate({version: "v2"}).then((res) => { |
| | | downloadFile(res); |
| | | }).catch((err) => { |
| | | this.$message.error('ä¸è½½é误ï¼è·åæä»¶æµé误' + err) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | ::v-deep .ant-upload.ant-upload-drag { |
| | | position: relative; |
| | | width: 140px; |
| | | height: 135px; |
| | | text-align: center; |
| | | background: #fafafa; |
| | | border: 1px dashed #d9d9d9; |
| | | border-radius: 2px; |
| | | cursor: pointer; |
| | | -webkit-transition: border-color 0.3s; |
| | | transition: border-color 0.3s; |
| | | } |
| | | ::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) { |
| | | color: #ffc53d; |
| | | border-color: white; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <!-- æ§å¶å±æ§è§å --> |
| | | <div ref="boxOutWrap" class="boxOutWrap"> |
| | | <div ref="boxForm" class="boxForm"> |
| | | <a-card :bordered="false" :bodyStyle="tstyle"> |
| | | <div class="table-page-search-wrapper" v-if="hasPerm('WmsControlRule:page')"> |
| | | <a-form layout="inline"> |
| | | <a-row :gutter="48"> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="è§åç¼å·"> |
| | | <a-input v-model="queryParam.ruleCode" allow-clear placeholder="请è¾å
¥è§åç¼å·" /> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="è§ååç§°"> |
| | | <a-input v-model="queryParam.ruleName" allow-clear placeholder="请è¾å
¥è§ååç§°" /> |
| | | </a-form-item> </a-col |
| | | ><template v-if="advanced"> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="è§åæè¿°"> |
| | | <a-input v-model="queryParam.ruleDesc" allow-clear placeholder="请è¾å
¥è§åæè¿°" /> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="æ¯å¦ç¦ç¨"> |
| | | <a-select |
| | | :allowClear="true" |
| | | style="width: 100%" |
| | | v-model="queryParam.isDisabled" |
| | | placeholder="è¯·éæ©æ¯å¦ç¦ç¨" |
| | | > |
| | | <a-select-option v-for="(item, index) in isDisabledData" :key="index" :value="item.code">{{ |
| | | item.name |
| | | }}</a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | | </a-col> |
| | | <!--å¹´ææ¥æ¶åç§--> |
| | | <!--æ¶é´èå´--> |
| | | |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="å建æ¶é´"> |
| | | <a-range-picker |
| | | style="width: 100%" |
| | | :placeholder="['å¼å§æ¶é´', 'ç»ææ¶é´']" |
| | | :show-time="{ |
| | | format: 'HH:mm:ss', |
| | | defaultValue: [moment('00:00:00', 'HH:mm:ss'), moment('23:59:59', 'HH:mm:ss')] |
| | | }" |
| | | v-model="queryParam.createdTime" |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | format="YYYY-MM-DD HH:mm:ss" |
| | | @change="onChangecreatedTime" |
| | | /> |
| | | </a-form-item> |
| | | </a-col> |
| | | <!--å¹´ææ¥æ¶åç§--> |
| | | <!--æ¶é´èå´--> |
| | | |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="æ´æ°æ¶é´"> |
| | | <a-range-picker |
| | | style="width: 100%" |
| | | :placeholder="['å¼å§æ¶é´', 'ç»ææ¶é´']" |
| | | :show-time="{ |
| | | format: 'HH:mm:ss', |
| | | defaultValue: [moment('00:00:00', 'HH:mm:ss'), moment('23:59:59', 'HH:mm:ss')] |
| | | }" |
| | | v-model="queryParam.updatedTime" |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | format="YYYY-MM-DD HH:mm:ss" |
| | | @change="onChangeupdatedTime" |
| | | /> |
| | | </a-form-item> |
| | | </a-col> |
| | | |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="å建è
åç§°"> |
| | | <a-input v-model="queryParam.createdUserName" allow-clear placeholder="请è¾å
¥å建è
åç§°" /> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="ä¿®æ¹è
åç§°"> |
| | | <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="请è¾å
¥ä¿®æ¹è
åç§°" /> |
| | | </a-form-item> |
| | | </a-col> |
| | | </template> |
| | | |
| | | <a-col :md="8" :sm="24"> |
| | | <span class="table-page-search-submitButtons"> |
| | | <a-button type="primary" @click="$refs.table.refresh(true)">æ¥è¯¢</a-button> |
| | | <a-button style="margin-left: 8px" @click="() => (queryParam = {})">éç½®</a-button> |
| | | <a @click="toggleAdvanced" style="margin-left: 8px"> |
| | | {{ advanced ? 'æ¶èµ·' : 'å±å¼' }} |
| | | <a-icon :type="advanced ? 'up' : 'down'" /> |
| | | </a> |
| | | </span> |
| | | </a-col> |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | </a-card> |
| | | </div> |
| | | <a-card :bordered="false"> |
| | | <s-table |
| | | ref="table" |
| | | :columns="columns" |
| | | :data="loadData" |
| | | :alert="true" |
| | | @changeTablePage="pageInfo = $event" |
| | | :scroll="{ x: true, y: tableHeight }" |
| | | :rowKey="record => record.id" |
| | | :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" |
| | | > |
| | | <template class="table-operator" slot="operator" v-if="hasPerm('WmsControlRule:add')"> |
| | | <div ref="actionBar" class="actionBar"> |
| | | <a-button |
| | | type="info" |
| | | v-if="hasPerm('sysExcelTemplate:importExcel')" |
| | | icon="upload" |
| | | @click="$refs.excelForm.index()" |
| | | > |
| | | 导å
¥ |
| | | </a-button> |
| | | <a-button |
| | | type="info" |
| | | v-if="hasPerm('WmsControlRule:exportExcel')" |
| | | icon="download" |
| | | @click="WmsControlRuleToExcel()" |
| | | > |
| | | å¯¼åº |
| | | </a-button> |
| | | <a-button type="primary" v-if="hasPerm('WmsControlRule:add')" icon="plus" @click="$refs.addForm.add()" |
| | | >æ°å¢æ§å¶å±æ§è§å</a-button |
| | | > |
| | | </div> |
| | | </template> |
| | | <span slot="isDisabledscopedSlots" slot-scope="text"> |
| | | <div v-if="text === true"> |
| | | <a-tag color="green">æ¯</a-tag> |
| | | </div> |
| | | <div v-else-if="text == false"> |
| | | <a-tag color="volcano">å¦</a-tag> |
| | | </div> |
| | | <div v-else=""></div> |
| | | </span> |
| | | <span slot="action" slot-scope="text, record"> |
| | | <!-- èªå®ä¹ --> |
| | | <a v-if="hasPerm('WmsControlRule:getdetail')" @click="$refs.detailForm.edit(record)">详æ
</a> |
| | | |
| | | <a v-if="hasPerm('WmsControlRule:edit')" @click="$refs.editForm.edit(record)">ç¼è¾</a> |
| | | <a-divider type="vertical" v-if="hasPerm('WmsControlRule:edit') & hasPerm('WmsControlRule:delete')" /> |
| | | <a-popconfirm |
| | | v-if="hasPerm('WmsControlRule:delete')" |
| | | placement="topRight" |
| | | title="确认å é¤ï¼" |
| | | @confirm="() => WmsControlRuleDelete(record)" |
| | | > |
| | | <a>å é¤</a> |
| | | </a-popconfirm> |
| | | </span> |
| | | </s-table> |
| | | <add-form ref="addForm" @ok="handleOk" /> |
| | | <edit-form ref="editForm" @ok="handleOk" /> |
| | | <excel-form ref="excelForm" @ok="handleOk" /> |
| | | |
| | | <!-- èªå®ä¹ --> |
| | | <detail-form ref="detailForm" @ok="handleOk" /> |
| | | |
| | | </a-card> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import { STable } from '@/components' |
| | | import moment from 'moment' |
| | | import { |
| | | WmsControlRulePage, |
| | | WmsControlRuleDelete, |
| | | WmsControlRuleToExcel |
| | | } from '@/api/modular/main/WmsBase/WmsControlRuleManage' |
| | | //èªå®ä¹tableé«åº¦ |
| | | import setTableHtMixin from '@/mixins/handleTableHt.js' |
| | | import addForm from './addForm.vue' |
| | | import { exportExcel } from '@/utils/exportToExcel' |
| | | import { downloadFile } from '@/utils/util' |
| | | import editForm from './editForm.vue' |
| | | import excelForm from './excelForm.vue' |
| | | import detailForm from './details.vue' |
| | | |
| | | |
| | | export default { |
| | | mixins: [setTableHtMixin], |
| | | components: { |
| | | STable, |
| | | addForm, |
| | | editForm, |
| | | excelForm, |
| | | detailForm |
| | | }, |
| | | data() { |
| | | return { |
| | | advanced: false, // é«çº§æç´¢ å±å¼/å
³é |
| | | queryParam: {}, |
| | | pageInfo: { |
| | | current: 1, |
| | | pageSize: 10 |
| | | }, |
| | | columns: [ |
| | | { |
| | | title: 'åºå·', |
| | | width: '60px', |
| | | align: 'center', |
| | | customRender: (text, record, index) => `${index + 1 + (this.pageInfo.current - 1) * this.pageInfo.pageSize}` |
| | | }, |
| | | { |
| | | title: 'è§åç¼å·', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'ruleCode' |
| | | }, |
| | | { |
| | | title: 'è§ååç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'ruleName' |
| | | }, |
| | | { |
| | | title: 'è§åæè¿°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'ruleDesc' |
| | | }, |
| | | { |
| | | title: 'æ¯å¦ç¦ç¨', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'isDisabled', |
| | | scopedSlots: { customRender: 'isDisabledscopedSlots' } |
| | | }, |
| | | { |
| | | title: 'å建æ¶é´', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'createdTime' |
| | | }, |
| | | { |
| | | title: 'æ´æ°æ¶é´', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'updatedTime' |
| | | }, |
| | | { |
| | | title: 'å建è
åç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'createdUserName' |
| | | }, |
| | | { |
| | | title: 'ä¿®æ¹è
åç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px' //æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'updatedUserName' |
| | | } |
| | | ], |
| | | tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' }, |
| | | // å è½½æ°æ®æ¹æ³ å¿
须为 Promise 对象 |
| | | loadData: parameter => { |
| | | return WmsControlRulePage(Object.assign(parameter, this.switchingDate())).then(res => { |
| | | return res.data |
| | | }) |
| | | }, |
| | | selectedRowKeys: [], |
| | | selectedRows: [] |
| | | } |
| | | }, |
| | | created() { |
| | | if (this.hasPerm('WmsControlRule:edit') || this.hasPerm('WmsControlRule:delete')) { |
| | | this.columns.push({ |
| | | title: 'æä½', |
| | | width: '150px', |
| | | dataIndex: 'action', |
| | | scopedSlots: { customRender: 'action' } |
| | | }) |
| | | } |
| | | const path = this.$route.path |
| | | const columnStr = window.localStorage.getItem(path) |
| | | if (columnStr) { |
| | | var _columns = JSON.parse(columnStr) |
| | | this.columns.forEach(element => { |
| | | var fObj = _columns.find((item, index) => { |
| | | return item.dataIndex === element.dataIndex |
| | | }) |
| | | if (fObj != undefined && fObj != null) { |
| | | element.checked = fObj.checked |
| | | } |
| | | }) |
| | | } |
| | | const isDisabledOption = this.$options |
| | | this.isDisabledData = isDisabledOption.filters['dictData']('yes_true_false') |
| | | |
| | | this.handleTableHt() //è®¾ç½®ä¸»è¡¨è¡¨æ ¼é«åº¦ |
| | | window.addEventListener( |
| | | 'resize', |
| | | () => { |
| | | this.handleTableHt() // çå¬å±å¹å¤§å°æ¹åè¡¨æ ¼é«åº¦ |
| | | }, |
| | | false |
| | | ) |
| | | }, |
| | | methods: { |
| | | moment, |
| | | /** |
| | | * æ¥è¯¢åæ°ç»è£
|
| | | */ |
| | | switchingDate() { |
| | | const obj = JSON.parse(JSON.stringify(this.queryParam)) |
| | | return obj |
| | | }, |
| | | WmsControlRuleDelete(record) { |
| | | WmsControlRuleDelete(record).then(res => { |
| | | if (res.success) { |
| | | this.$message.success('å 餿å') |
| | | this.$refs.table.refresh() |
| | | } else { |
| | | this.$message.error('å é¤å¤±è´¥') // + res.message |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | WmsControlRuleToExcel() { |
| | | this.loading = true |
| | | let entozh = {} |
| | | const path = this.$route.path |
| | | if (window.localStorage.getItem(path)) { |
| | | JSON.parse(window.localStorage.getItem(path)).forEach(item => { |
| | | if (item.dataIndex != 'action' && item.checked) { |
| | | entozh[item.dataIndex] = item.title |
| | | } |
| | | }) |
| | | } else { |
| | | //ç´æ¥ç¹å¯¼åº |
| | | this.columns.forEach(item => { |
| | | if (item.dataIndex != 'action') { |
| | | entozh[item.dataIndex] = item.title |
| | | } |
| | | }) |
| | | } |
| | | WmsControlRulePage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)) |
| | | .then(res => { |
| | | this.loading = false |
| | | //éè¦æªåæ¥æçåæ®µ |
| | | var arrDataCutout = this.columns.filter(v => v.customCutout == true) |
| | | res.data.rows.forEach(item => { |
| | | var arrKeys = Object.keys(item) |
| | | arrKeys.forEach(key => { |
| | | var strFieldDic = key + 'Data' |
| | | //æä¸¾è½¬å¼ |
| | | if (this[strFieldDic] && this[strFieldDic].length > 0) { |
| | | let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key])) |
| | | if (arrFieldDic.length > 0) { |
| | | item[key] = arrFieldDic[0]?.name || '没ææä¸¾å¼' |
| | | } |
| | | } |
| | | // æ¥ææªå |
| | | if (arrDataCutout.length > 0) { |
| | | arrDataCutout.forEach(itemIn => { |
| | | if (key == itemIn.dataIndex && item[key]) { |
| | | item[key] = item[key].split(' ')[0] |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | }) |
| | | exportExcel(res.data.rows, entozh, 'xlsx', `${this.$route.meta.title}`) |
| | | }) |
| | | .catch(err => { |
| | | this.loading = false |
| | | this.$message.error('ä¸è½½é误ï¼è·åæä»¶æµé误' + err) |
| | | }) |
| | | }, |
| | | |
| | | toggleAdvanced() { |
| | | this.advanced = !this.advanced |
| | | this.handleTableHt() //è®¾ç½®ä¸»è¡¨è¡¨æ ¼é«åº¦ |
| | | }, |
| | | onChangecreatedTime(date, dateString) { |
| | | this.queryParam.createdTime = dateString |
| | | }, |
| | | onChangeupdatedTime(date, dateString) { |
| | | this.queryParam.updatedTime = dateString |
| | | }, |
| | | handleOk() { |
| | | this.$refs.table.refresh() |
| | | }, |
| | | onSelectChange(selectedRowKeys, selectedRows) { |
| | | this.selectedRowKeys = selectedRowKeys |
| | | this.selectedRows = selectedRows |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="less"> |
| | | .table-operator { |
| | | margin-bottom: 18px; |
| | | } |
| | | button { |
| | | margin-right: 8px; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-modal |
| | | title="æ°å¢æ§å¶å±æ§è§åæç»" |
| | | :width="900" |
| | | :visible="visible" |
| | | :confirmLoading="confirmLoading" |
| | | @ok="handleSubmit" |
| | | @cancel="handleCancel"> |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-form :form="form"> |
| | | <a-form-item label="æ§å¶å±æ§è§åID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æ§å¶å±æ§è§åID" v-decorator="['controlRuleId', {rules: [{required: true, message: '请è¾å
¥æ§å¶å±æ§è§åIDï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æé«åºå" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æé«åºå" v-decorator="['maxImumqty', {rules: [{required: true, message: '请è¾å
¥æé«åºåï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æä½åºå" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æä½åºå" v-decorator="['minImumqty', {rules: [{required: true, message: '请è¾å
¥æä½åºåï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="å®å
¨åºå" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥å®å
¨åºå" v-decorator="['safeImumqty', {rules: [{required: true, message: '请è¾å
¥å®å
¨åºåï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æå°åºé¾" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æå°åºé¾" v-decorator="['minStorageAge', {rules: [{required: true, message: '请è¾å
¥æå°åºé¾ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æå¤§åºé¾" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æå¤§åºé¾" v-decorator="['maxStorageAge', {rules: [{required: true, message: '请è¾å
¥æå¤§åºé¾ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¯å¦å
æ£" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-switch v-decorator="['isNotChek',{rules: [{ required: true, message: 'è¯·éæ©æ¯å¦å
æ£ï¼' }], valuePropName: 'checked'}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="ä¿è´¨æå¤©æ°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ä¿è´¨æå¤©æ°" v-decorator="['shelfLifeDays', {rules: [{required: true, message: '请è¾å
¥ä¿è´¨æå¤©æ°ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¯å¦ç¦ç¨" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: 'è¯·éæ©æ¯å¦ç¦ç¨ï¼' }], valuePropName: 'checked'}]" /> |
| | | </a-form-item> |
| | | </a-form> |
| | | </a-spin> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import { |
| | | WmsControlRuleDetailAdd |
| | | } from '@/api/modular/main/WmsBase/WmsControlRuleDetailManage' |
| | | export default { |
| | | data () { |
| | | return { |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 15 } |
| | | }, |
| | | visible: false, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this) |
| | | } |
| | | }, |
| | | methods: { |
| | | moment, |
| | | // åå§åæ¹æ³ |
| | | add (record) { |
| | | this.visible = true |
| | | this.$nextTick(() => { |
| | | |
| | | }); |
| | | }, |
| | | /** |
| | | * æäº¤è¡¨å |
| | | */ |
| | | handleSubmit () { |
| | | const { form: { validateFields } } = this |
| | | this.confirmLoading = true |
| | | validateFields((errors, values) => { |
| | | if (!errors) { |
| | | for (const key in values) { |
| | | if (typeof (values[key]) === 'object') { |
| | | values[key] = JSON.stringify(values[key]) |
| | | } |
| | | } |
| | | WmsControlRuleDetailAdd(values).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('æ°å¢æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', values) |
| | | this.handleCancel() |
| | | } else { |
| | | this.$message.error('æ°å¢å¤±è´¥ï¼' + JSON.stringify(res.message)) |
| | | } |
| | | }).finally((res) => { |
| | | this.confirmLoading = false |
| | | }) |
| | | } else { |
| | | this.confirmLoading = false |
| | | } |
| | | }) |
| | | }, |
| | | handleCancel () { |
| | | this.form.resetFields() |
| | | this.visible = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-modal |
| | | title="ç¼è¾æ§å¶å±æ§è§åæç»" |
| | | :width="900" |
| | | :visible="visible" |
| | | :confirmLoading="confirmLoading" |
| | | @ok="handleSubmit" |
| | | @cancel="handleCancel"> |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-form :form="form"> |
| | | <a-form-item label="æ§å¶å±æ§è§åID" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æ§å¶å±æ§è§åID" v-decorator="['controlRuleId', {rules: [{required: true, message: '请è¾å
¥æ§å¶å±æ§è§åIDï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æé«åºå" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æé«åºå" v-decorator="['maxImumqty', {rules: [{required: true, message: '请è¾å
¥æé«åºåï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æä½åºå" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æä½åºå" v-decorator="['minImumqty', {rules: [{required: true, message: '请è¾å
¥æä½åºåï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="å®å
¨åºå" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥å®å
¨åºå" v-decorator="['safeImumqty', {rules: [{required: true, message: '请è¾å
¥å®å
¨åºåï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æå°åºé¾" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æå°åºé¾" v-decorator="['minStorageAge', {rules: [{required: true, message: '请è¾å
¥æå°åºé¾ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æå¤§åºé¾" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥æå¤§åºé¾" v-decorator="['maxStorageAge', {rules: [{required: true, message: '请è¾å
¥æå¤§åºé¾ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¯å¦å
æ£" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-switch v-decorator="['isNotChek',{rules: [{ required: true, message: 'è¯·éæ©æ¯å¦å
æ£ï¼' }], valuePropName: 'checked'}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="ä¿è´¨æå¤©æ°" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-input placeholder="请è¾å
¥ä¿è´¨æå¤©æ°" v-decorator="['shelfLifeDays', {rules: [{required: true, message: '请è¾å
¥ä¿è´¨æå¤©æ°ï¼'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item label="æ¯å¦ç¦ç¨" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback> |
| | | <a-switch v-decorator="['isDisabled',{rules: [{ required: true, message: 'è¯·éæ©æ¯å¦ç¦ç¨ï¼' }], valuePropName: 'checked'}]" /> |
| | | </a-form-item> |
| | | <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item> |
| | | </a-form> |
| | | </a-spin> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import { |
| | | WmsControlRuleDetailEdit |
| | | } from '@/api/modular/main/WmsBase/WmsControlRuleDetailManage' |
| | | export default { |
| | | data () { |
| | | return { |
| | | Id: 0, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 15 } |
| | | }, |
| | | record: {}, |
| | | visible: false, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this) |
| | | } |
| | | }, |
| | | methods: { |
| | | moment, |
| | | // åå§åæ¹æ³ |
| | | edit (record) { |
| | | this.visible = true; |
| | | this.Id = record.id; |
| | | this.$nextTick(() => { |
| | | }); |
| | | //深度æ·è´ ç§»é¤VUEççå¬ï¼é²æ¢INDEX页é¢å¼åå¨ |
| | | this.record = JSON.parse(JSON.stringify(record)) |
| | | this.$nextTick(() => { |
| | | this.form.setFieldsValue( |
| | | { |
| | | id: record.id, |
| | | controlRuleId: record.controlRuleId, |
| | | maxImumqty: record.maxImumqty, |
| | | minImumqty: record.minImumqty, |
| | | safeImumqty: record.safeImumqty, |
| | | minStorageAge: record.minStorageAge, |
| | | maxStorageAge: record.maxStorageAge, |
| | | isNotChek: record.isNotChek, |
| | | shelfLifeDays: record.shelfLifeDays, |
| | | isDisabled: record.isDisabled |
| | | } |
| | | ) |
| | | }) |
| | | }, |
| | | handleSubmit () { |
| | | const { form: { validateFields } } = this |
| | | this.confirmLoading = true |
| | | validateFields((errors, values) => { |
| | | if (!errors) { |
| | | for (const key in values) { |
| | | if (values[key] == null) continue |
| | | if (typeof (values[key]) === 'object') { |
| | | values[key] = JSON.stringify(values[key]) |
| | | this.record[key] = values[key] |
| | | } else { |
| | | this.record[key] = values[key] |
| | | } |
| | | } |
| | | WmsControlRuleDetailEdit(this.record).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('ç¼è¾æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', this.record) |
| | | this.handleCancel() |
| | | } else { |
| | | this.$message.error('ç¼è¾å¤±è´¥ï¼' + JSON.stringify(res.message)) |
| | | } |
| | | }).finally((res) => { |
| | | this.confirmLoading = false |
| | | }) |
| | | }else{ |
| | | this.confirmLoading = false |
| | | } |
| | | }); |
| | | }, |
| | | handleCancel () { |
| | | this.form.resetFields() |
| | | this.visible = false |
| | | } |
| | | } |
| | | } |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <a-modal |
| | | :width="850" |
| | | :destroyOnClose="true" |
| | | :visible="visible" |
| | | :forceRender="true" |
| | | title="æ¹é导å
¥" |
| | | cancelText="åæ¶ä¸ä¼ " |
| | | okText="å¼å§ä¸ä¼ " |
| | | @cancel="handleCancel" |
| | | @ok="handleSubmit"> |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-row :span="24"> |
| | | <span>è¯·éæ©è¦å¯¼å
¥çæ°æ®æä»¶ï¼Excelæ ¼å¼ï¼</span> |
| | | </a-row> |
| | | <p></p> |
| | | <a-row> |
| | | <a-col :span="16"> |
| | | <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload"> |
| | | <a-icon style="font-size: 40px;" type="cloud-upload" /> |
| | | </a-upload-dragger> |
| | | </a-col> |
| | | <!--<a-col :span="8"> |
| | | <span>导å
¥æ¨¡å¼ï¼</span> |
| | | <a-select |
| | | style="width: 130px" |
| | | placeholder="è¯·éæ©å¯¼å
¥æ¨¡å¼" |
| | | v-model="importExcelType"> |
| | | <a-select-option |
| | | v-for="(item,index) in importExcelTypeData" |
| | | :key="index" |
| | | :value="item.code">{{ item.name }} |
| | | </a-select-option> |
| | | </a-select> |
| | | </a-col>--> |
| | | </a-row> |
| | | <a-row :span="24"> |
| | | <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed"> |
| | | ç¹å»æ¥çæä»¶ä¸ä¼ è¦æ± |
| | | </a-button>--> |
| | | <span>ã</span> |
| | | <a-button style="width: 90px;text-align: left;" @click="wmsControlRuleDetailDownloadExcelTemplate" type="link">ä¸è½½å¯¼å
¥æ¨¡æ¿</a-button>ï¼å¡«åå¹¶ä¸ä¼ |
| | | <span>ã</span> |
| | | <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed"> |
| | | æ¶èµ· |
| | | </a-button> |
| | | </a-row> |
| | | <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24"> |
| | | <a-breadcrumb> |
| | | <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">æä»¶ä¸ä¼ è¦æ±</a-breadcrumb-item> |
| | | </a-breadcrumb> |
| | | </a-row> |
| | | <pre v-show="detailed"> |
| | | <div v-html="demandText"></div> |
| | | </pre> |
| | | <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table> |
| | | <pre v-show="detailed"> |
| | | <div v-html="columnText"></div> |
| | | </pre> |
| | | </a-spin> |
| | | </a-modal> |
| | | </template> |
| | | |
| | | <script> |
| | | import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util' |
| | | |
| | | import { WmsControlRuleDetailImportExcel, WmsControlRuleDetailDownloadExcelTemplate} from '@/api/modular/main/WmsBase/WmsControlRuleDetailManage' |
| | | import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage' |
| | | export default { |
| | | components: { |
| | | }, |
| | | data() { |
| | | return { |
| | | visible: false, |
| | | detailed: false, |
| | | confirmLoading: false, |
| | | fileList: [], |
| | | importExcelTypeData: [], |
| | | importExcelType: '1', |
| | | uploadFile: null, |
| | | columns: [], |
| | | dataList: [], |
| | | demandText:'', |
| | | columnText: '' |
| | | } |
| | | }, |
| | | methods: { |
| | | index() { |
| | | this.visible = true; |
| | | this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type') |
| | | this.demandText = parseDemandText("wmsControlRuleDetailDownloadExcelTemplate") |
| | | window.downloadFile = this.wmsControlRuleDetailDownloadExcelTemplate; |
| | | this.getTable(); |
| | | }, |
| | | showDemand() { |
| | | this.detailed = !this.detailed; |
| | | }, |
| | | customRequest(document) { |
| | | this.uploadFile = document |
| | | }, |
| | | getTable() { |
| | | sysExcelTemplateGetColumnList({className: "WmsControlRuleDetail"}).then(res => |
| | | { |
| | | if (res.success) { |
| | | this.columns =[]; |
| | | this.dataList = [{}]; |
| | | res.data.forEach(x => { |
| | | this.columns.push({ |
| | | dataIndex: x.columnName, |
| | | key: x.columnName, |
| | | title: x.columnComment |
| | | }); |
| | | this.dataList[0][x.columnName] = x.isRequired ? "å¿
å¡«" : "éå¿
å¡«" |
| | | }); |
| | | this.columnText = parseExcelFieldText(res.data); |
| | | } |
| | | }); |
| | | }, |
| | | beforeUpload(fileInfo) { |
| | | let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']); |
| | | if (!res.success) { |
| | | this.$message.warning(res.msg) |
| | | return false |
| | | } |
| | | setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000) |
| | | }, |
| | | handleChange(fileInfo) { |
| | | if (fileInfo.file.status === 'error') { |
| | | fileInfo.fileList.splice(0, 1) |
| | | } |
| | | if (fileInfo.file.status === 'done') { |
| | | if (fileInfo.fileList.length > 1) { |
| | | fileInfo.fileList.splice(0, 1) |
| | | } |
| | | this.fileList = fileInfo.file |
| | | } |
| | | }, |
| | | handleSubmit() { |
| | | this.confirmLoading = true |
| | | const formData = new FormData() |
| | | formData.append('file', this.uploadFile.file) |
| | | WmsControlRuleDetailImportExcel(formData, {importExcelType: this.importExcelType}).then(res => { |
| | | this.$message.success('æä½æå') |
| | | this.confirmLoading = false |
| | | this.$emit('ok', []) |
| | | this.handleCancel() |
| | | }).finally((res)=>{this.confirmLoading = false}) |
| | | }, |
| | | handleCancel() { |
| | | this.visible = false |
| | | this.detailed = false |
| | | }, |
| | | wmsControlRuleDetailDownloadExcelTemplate() { |
| | | WmsControlRuleDetailDownloadExcelTemplate({version: "v2"}).then((res) => { |
| | | downloadFile(res); |
| | | }).catch((err) => { |
| | | this.$message.error('ä¸è½½é误ï¼è·åæä»¶æµé误' + err) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | ::v-deep .ant-upload.ant-upload-drag { |
| | | position: relative; |
| | | width: 140px; |
| | | height: 135px; |
| | | text-align: center; |
| | | background: #fafafa; |
| | | border: 1px dashed #d9d9d9; |
| | | border-radius: 2px; |
| | | cursor: pointer; |
| | | -webkit-transition: border-color 0.3s; |
| | | transition: border-color 0.3s; |
| | | } |
| | | ::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) { |
| | | color: #ffc53d; |
| | | border-color: white; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div ref="boxOutWrap" class="boxOutWrap"> |
| | | <div ref="boxForm" class="boxForm"> |
| | | <a-card :bordered="false" :bodyStyle="tstyle"> |
| | | |
| | | <div class="table-page-search-wrapper" v-if="hasPerm('WmsControlRuleDetail:page')"> |
| | | <a-form layout="inline"> |
| | | <a-row :gutter="48"> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="æ§å¶å±æ§è§åID"> |
| | | <a-input v-model="queryParam.controlRuleId" allow-clear placeholder="请è¾å
¥æ§å¶å±æ§è§åID"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="æé«åºå"> |
| | | <a-input v-model="queryParam.maxImumqty" allow-clear placeholder="请è¾å
¥æé«åºå"/> |
| | | </a-form-item> |
| | | </a-col><template v-if="advanced"> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="æä½åºå"> |
| | | <a-input v-model="queryParam.minImumqty" allow-clear placeholder="请è¾å
¥æä½åºå"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="å®å
¨åºå"> |
| | | <a-input v-model="queryParam.safeImumqty" allow-clear placeholder="请è¾å
¥å®å
¨åºå"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="æå°åºé¾"> |
| | | <a-input v-model="queryParam.minStorageAge" allow-clear placeholder="请è¾å
¥æå°åºé¾"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="æå¤§åºé¾"> |
| | | <a-input v-model="queryParam.maxStorageAge" allow-clear placeholder="请è¾å
¥æå¤§åºé¾"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="æ¯å¦å
æ£"> |
| | | <a-select :allowClear="true" style="width: 100%" v-model="queryParam.isNotChek" placeholder="è¯·éæ©æ¯å¦å
æ£"> |
| | | <a-select-option v-for="(item,index) in isNotChekData" :key="index" :value="item.code">{{ item.name }}</a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | | </a-col> |
| | | |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="ä¿è´¨æå¤©æ°"> |
| | | <a-input v-model="queryParam.shelfLifeDays" allow-clear placeholder="请è¾å
¥ä¿è´¨æå¤©æ°"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="æ¯å¦ç¦ç¨"> |
| | | <a-select :allowClear="true" style="width: 100%" v-model="queryParam.isDisabled" placeholder="è¯·éæ©æ¯å¦ç¦ç¨"> |
| | | <a-select-option v-for="(item,index) in isDisabledData" :key="index" :value="item.code">{{ item.name }}</a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | | </a-col> |
| | | <!--å¹´ææ¥æ¶åç§--> |
| | | <!--æ¶é´èå´--> |
| | | |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="å建æ¶é´"> |
| | | <a-range-picker style="width: 100%" :placeholder="['å¼å§æ¶é´', 'ç»ææ¶é´']" :show-time="{ |
| | | format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.createdTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangecreatedTime"/> |
| | | |
| | | </a-form-item> |
| | | </a-col> |
| | | <!--å¹´ææ¥æ¶åç§--> |
| | | <!--æ¶é´èå´--> |
| | | |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="æ´æ°æ¶é´"> |
| | | <a-range-picker style="width: 100%" :placeholder="['å¼å§æ¶é´', 'ç»ææ¶é´']" :show-time="{ |
| | | format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.updatedTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangeupdatedTime"/> |
| | | |
| | | </a-form-item> |
| | | </a-col> |
| | | |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="å建è
åç§°"> |
| | | <a-input v-model="queryParam.createdUserName" allow-clear placeholder="请è¾å
¥å建è
åç§°"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="ä¿®æ¹è
åç§°"> |
| | | <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="请è¾å
¥ä¿®æ¹è
åç§°"/> |
| | | </a-form-item> |
| | | </a-col> </template> |
| | | |
| | | <a-col :md="8" :sm="24" > |
| | | <span class="table-page-search-submitButtons"> |
| | | <a-button type="primary" @click="$refs.table.refresh(true)" >æ¥è¯¢</a-button> |
| | | <a-button style="margin-left: 8px" @click="() => queryParam = {}">éç½®</a-button> |
| | | <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? 'æ¶èµ·' : 'å±å¼' }} |
| | | <a-icon :type="advanced ? 'up' : 'down'"/> |
| | | </a> |
| | | </span> |
| | | </a-col> |
| | | |
| | | </a-row> |
| | | </a-form> |
| | | </div> |
| | | </a-card> |
| | | </div> |
| | | <a-card :bordered="false"> |
| | | <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" --> |
| | | <s-table |
| | | ref="table" |
| | | :columns="columns" |
| | | :data="loadData" |
| | | :alert="true" |
| | | @changeTablePage="pageInfo = $event" |
| | | :scroll="{x: true,y:tableHeight}" |
| | | :rowKey="(record) => record.id" |
| | | > |
| | | <template class="table-operator" slot="operator" v-if="hasPerm('WmsControlRuleDetail:add')" > |
| | | <div ref="actionBar" class="actionBar"> |
| | | <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()"> |
| | | 导å
¥ |
| | | </a-button> |
| | | <a-button type="info" v-if="hasPerm('WmsControlRuleDetail:exportExcel')" icon="download" @click="WmsControlRuleDetailToExcel()"> |
| | | å¯¼åº |
| | | </a-button> |
| | | <a-button type="primary" v-if="hasPerm('WmsControlRuleDetail:add')" icon="plus" @click="$refs.addForm.add()">æ°å¢æ§å¶å±æ§è§åæç»</a-button> |
| | | </div> |
| | | </template> |
| | | <span slot="isNotChekscopedSlots" slot-scope="text"> |
| | | <div v-if="text===true "> |
| | | <a-tag color="green">æ¯</a-tag> |
| | | </div> |
| | | <div v-else-if="text==false"> |
| | | <a-tag color="volcano">å¦</a-tag> |
| | | </div> |
| | | <div v-else=""></div> |
| | | </span> |
| | | <span slot="isDisabledscopedSlots" slot-scope="text"> |
| | | <div v-if="text===true "> |
| | | <a-tag color="green">æ¯</a-tag> |
| | | </div> |
| | | <div v-else-if="text==false"> |
| | | <a-tag color="volcano">å¦</a-tag> |
| | | </div> |
| | | <div v-else=""></div> |
| | | </span> |
| | | <span slot="action" slot-scope="text, record"> |
| | | |
| | | <a v-if="hasPerm('WmsControlRuleDetail:edit')" @click="$refs.editForm.edit(record)">ç¼è¾</a> |
| | | <a-divider type="vertical" v-if="hasPerm('WmsControlRuleDetail:edit') & hasPerm('WmsControlRuleDetail:delete')"/> |
| | | <a-popconfirm v-if="hasPerm('WmsControlRuleDetail:delete')" placement="topRight" title="确认å é¤ï¼" @confirm="() => WmsControlRuleDetailDelete(record)"> |
| | | <a>å é¤</a> |
| | | </a-popconfirm> |
| | | </span> |
| | | </s-table> |
| | | <add-form ref="addForm" @ok="handleOk" /> |
| | | <edit-form ref="editForm" @ok="handleOk" /> |
| | | <excel-form ref="excelForm" @ok="handleOk" /> |
| | | </a-card> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import { STable } from '@/components' |
| | | import moment from 'moment' |
| | | import { WmsControlRuleDetailPage, WmsControlRuleDetailDelete, WmsControlRuleDetailToExcel } from '@/api/modular/main/WmsBase/WmsControlRuleDetailManage' |
| | | //èªå®ä¹tableé«åº¦ |
| | | import setTableHtMixin from '@/mixins/handleTableHt.js' |
| | | import addForm from './addForm.vue' |
| | | import { exportExcel } from '@/utils/exportToExcel' |
| | | import { downloadFile } from '@/utils/util' |
| | | import editForm from './editForm.vue' |
| | | import excelForm from './excelForm.vue' |
| | | export default { |
| | | mixins: [setTableHtMixin], |
| | | components: { |
| | | STable, |
| | | addForm, |
| | | editForm, |
| | | excelForm |
| | | }, |
| | | data () { |
| | | return { |
| | | advanced: false, // é«çº§æç´¢ å±å¼/å
³é |
| | | queryParam: {}, |
| | | pageInfo: { |
| | | current: 1, |
| | | pageSize: 10 |
| | | }, |
| | | columns: [ |
| | | { |
| | | title:'åºå·', |
| | | width: '60px', |
| | | align: 'center', |
| | | customRender: (text, record, index) => `${index + 1 + (this.pageInfo.current - 1) * this.pageInfo.pageSize}` |
| | | }, |
| | | { |
| | | title: 'æ§å¶å±æ§è§åID', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '140px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '140px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'controlRuleId' |
| | | }, |
| | | { |
| | | title: 'æé«åºå', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'maxImumqty' |
| | | }, |
| | | { |
| | | title: 'æä½åºå', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'minImumqty' |
| | | }, |
| | | { |
| | | title: 'å®å
¨åºå', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'safeImumqty' |
| | | }, |
| | | { |
| | | title: 'æå°åºé¾', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'minStorageAge' |
| | | }, |
| | | { |
| | | title: 'æå¤§åºé¾', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'maxStorageAge' |
| | | }, |
| | | { |
| | | title: 'æ¯å¦å
æ£', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'isNotChek', |
| | | scopedSlots: { customRender: 'isNotChekscopedSlots' } |
| | | }, |
| | | { |
| | | title: 'ä¿è´¨æå¤©æ°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'shelfLifeDays' |
| | | }, |
| | | { |
| | | title: 'æ¯å¦ç¦ç¨', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'isDisabled', |
| | | scopedSlots: { customRender: 'isDisabledscopedSlots' } |
| | | }, |
| | | { |
| | | title: 'å建æ¶é´', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'createdTime' |
| | | }, |
| | | { |
| | | title: 'æ´æ°æ¶é´', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'updatedTime' |
| | | }, |
| | | { |
| | | title: 'å建è
åç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'createdUserName' |
| | | }, |
| | | { |
| | | title: 'ä¿®æ¹è
åç§°', |
| | | align: 'center', |
| | | customHeaderCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | customCell: () => { |
| | | return { |
| | | style: { |
| | | 'min-width': '120px'//æå°å宽设置 |
| | | } |
| | | } |
| | | }, |
| | | sorter: true, |
| | | dataIndex: 'updatedUserName' |
| | | } |
| | | ], |
| | | tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' }, |
| | | // å è½½æ°æ®æ¹æ³ å¿
须为 Promise 对象 |
| | | loadData: parameter => { |
| | | return WmsControlRuleDetailPage(Object.assign(parameter, this.switchingDate())).then((res) => { |
| | | return res.data |
| | | }) |
| | | }, |
| | | selectedRowKeys: [], |
| | | selectedRows: [] |
| | | } |
| | | }, |
| | | created () { |
| | | if (this.hasPerm('WmsControlRuleDetail:edit') || this.hasPerm('WmsControlRuleDetail:delete')) { |
| | | this.columns.push({ |
| | | title: 'æä½', |
| | | width: '150px', |
| | | dataIndex: 'action', |
| | | scopedSlots: { customRender: 'action' } |
| | | }) |
| | | } |
| | | const path = this.$route.path |
| | | const columnStr = window.localStorage.getItem(path) |
| | | if(columnStr) { |
| | | var _columns = JSON.parse(columnStr) |
| | | this.columns.forEach(element => { |
| | | var fObj = _columns.find((item, index) => { |
| | | return item.dataIndex === element.dataIndex; |
| | | }) |
| | | if(fObj!=undefined && fObj!=null){ |
| | | element.checked=fObj.checked; |
| | | } |
| | | }); |
| | | } |
| | | const isNotChekOption = this.$options |
| | | this.isNotChekData = isNotChekOption.filters['dictData']('yes_true_false') |
| | | const isDisabledOption = this.$options |
| | | this.isDisabledData = isDisabledOption.filters['dictData']('yes_true_false') |
| | | |
| | | this.handleTableHt() //è®¾ç½®ä¸»è¡¨è¡¨æ ¼é«åº¦ |
| | | window.addEventListener( |
| | | 'resize', |
| | | () => { |
| | | this.handleTableHt() // çå¬å±å¹å¤§å°æ¹åè¡¨æ ¼é«åº¦ |
| | | }, |
| | | false |
| | | ) |
| | | |
| | | }, |
| | | methods: { |
| | | moment, |
| | | /** |
| | | * æ¥è¯¢åæ°ç»è£
|
| | | */ |
| | | switchingDate () { |
| | | const obj = JSON.parse(JSON.stringify(this.queryParam)) |
| | | return obj |
| | | }, |
| | | WmsControlRuleDetailDelete (record) { |
| | | WmsControlRuleDetailDelete(record).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('å 餿å') |
| | | this.$refs.table.refresh() |
| | | } else { |
| | | this.$message.error('å é¤å¤±è´¥') // + res.message |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | |
| | | WmsControlRuleDetailToExcel() { |
| | | this.loading = true |
| | | let entozh = {}; |
| | | const path = this.$route.path; |
| | | if (window.localStorage.getItem(path)) { |
| | | JSON.parse(window.localStorage.getItem(path)).forEach(item => { |
| | | if (item.dataIndex != 'action' && item.checked) { |
| | | entozh[item.dataIndex] = item.title |
| | | } |
| | | }) |
| | | } else { //ç´æ¥ç¹å¯¼åº |
| | | this.columns.forEach(item => { |
| | | if (item.dataIndex != 'action') { |
| | | entozh[item.dataIndex] = item.title |
| | | } |
| | | }) |
| | | } |
| | | WmsControlRuleDetailPage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => { |
| | | this.loading = false; |
| | | //éè¦æªåæ¥æçåæ®µ |
| | | var arrDataCutout = this.columns.filter(v => v.customCutout == true); |
| | | res.data.rows.forEach(item => { |
| | | var arrKeys = Object.keys(item); |
| | | arrKeys.forEach(key => { |
| | | var strFieldDic = key + 'Data'; |
| | | //æä¸¾è½¬å¼ |
| | | if (this[strFieldDic] && this[strFieldDic].length > 0) { |
| | | let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key])); |
| | | if (arrFieldDic.length > 0) { |
| | | item[key] = arrFieldDic[0]?.name || '没ææä¸¾å¼'; |
| | | } |
| | | } |
| | | // æ¥ææªå |
| | | if (arrDataCutout.length > 0) { |
| | | arrDataCutout.forEach(itemIn => { |
| | | if (key == itemIn.dataIndex && item[key]) { |
| | | item[key] = item[key].split(" ")[0] |
| | | } |
| | | }) |
| | | } |
| | | }); |
| | | }) |
| | | exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`) |
| | | }).catch((err) => { |
| | | this.loading = false |
| | | this.$message.error('ä¸è½½é误ï¼è·åæä»¶æµé误' + err) |
| | | }) |
| | | }, |
| | | |
| | | |
| | | toggleAdvanced () { |
| | | this.advanced = !this.advanced |
| | | this.handleTableHt() //è®¾ç½®ä¸»è¡¨è¡¨æ ¼é«åº¦ |
| | | }, |
| | | onChangecreatedTime(date, dateString) { |
| | | this.queryParam.createdTime = dateString |
| | | }, |
| | | onChangeupdatedTime(date, dateString) { |
| | | this.queryParam.updatedTime = dateString |
| | | }, |
| | | handleOk () { |
| | | this.$refs.table.refresh() |
| | | }, |
| | | onSelectChange (selectedRowKeys, selectedRows) { |
| | | this.selectedRowKeys = selectedRowKeys |
| | | this.selectedRows = selectedRows |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="less"> |
| | | .table-operator { |
| | | margin-bottom: 18px; |
| | | } |
| | | button { |
| | | margin-right: 8px; |
| | | } |
| | | </style> |
| | |
| | | Content of Tab Pane 2 |
| | | </a-tab-pane> |
| | | <a-tab-pane key="3" tab="æ¹æ¬¡å±æ§"> |
| | | Content of Tab Pane 3 |
| | | éæ±å¾
å® |
| | | </a-tab-pane> |
| | | <a-tab-pane key="4" tab="æ¿ä»£å管ç"> |
| | | <add-form-sub ref="addFormWmsSubstituteGood" @ok="handleOk" /> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core; |
| | | using Admin.NET.Core.Service; |
| | | using System.ComponentModel.DataAnnotations; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åæ¥è¯¢åæ° |
| | | /// </summary> |
| | | public class WmsControlRuleSearch : PageInputBase |
| | | { |
| | | /// <summary> |
| | | /// è§åç¼å· |
| | | /// </summary> |
| | | public virtual string RuleCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è§ååç§° |
| | | /// </summary> |
| | | public virtual string RuleName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è§åæè¿° |
| | | /// </summary> |
| | | public virtual string RuleDesc { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | public virtual bool? IsDisabled { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建æ¶é´ |
| | | /// </summary> |
| | | public virtual List<string> CreatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¶é´ |
| | | /// </summary> |
| | | public virtual List<string> UpdatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建è
åç§° |
| | | /// </summary> |
| | | public virtual string CreatedUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹è
åç§° |
| | | /// </summary> |
| | | public virtual string UpdatedUserName { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åä¸å页æ¥è¯¢åæ° |
| | | /// </summary> |
| | | public class WmsControlRuleSearchNonPage : PageInputNonPageBase |
| | | { |
| | | /// <summary> |
| | | /// è§åç¼å· |
| | | /// </summary> |
| | | public virtual string RuleCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è§ååç§° |
| | | /// </summary> |
| | | public virtual string RuleName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è§åæè¿° |
| | | /// </summary> |
| | | public virtual string RuleDesc { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | public virtual bool? IsDisabled { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建æ¶é´ |
| | | /// </summary> |
| | | public virtual List<DateTimeOffset>? CreatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¶é´ |
| | | /// </summary> |
| | | public virtual List<DateTimeOffset>? UpdatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建è
åç§° |
| | | /// </summary> |
| | | public virtual string CreatedUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹è
åç§° |
| | | /// </summary> |
| | | public virtual string UpdatedUserName { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åè¾å
¥åæ° |
| | | /// </summary> |
| | | public class WmsControlRuleInput |
| | | { |
| | | /// <summary> |
| | | /// è§åç¼å· |
| | | /// </summary> |
| | | [Required(ErrorMessage = "è§åç¼å·ä¸è½ä¸ºç©º")] |
| | | public virtual string RuleCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è§ååç§° |
| | | /// </summary> |
| | | [Required(ErrorMessage = "è§ååç§°ä¸è½ä¸ºç©º")] |
| | | public virtual string RuleName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è§åæè¿° |
| | | /// </summary> |
| | | public virtual string RuleDesc { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | [Required(ErrorMessage = "æ¯å¦ç¦ç¨ä¸è½ä¸ºç©º")] |
| | | public virtual bool IsDisabled { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åæ°å¢åæ° |
| | | /// </summary> |
| | | public class AddWmsControlRuleInput : WmsControlRuleInput |
| | | { |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åå é¤åæ° |
| | | /// </summary> |
| | | public class DeleteWmsControlRuleInput : BaseId |
| | | { |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åæ´æ°åæ° |
| | | /// </summary> |
| | | public class UpdateWmsControlRuleInput : WmsControlRuleInput |
| | | { |
| | | /// <summary> |
| | | /// Idä¸»é® |
| | | /// </summary> |
| | | [Required(ErrorMessage = "Id主é®ä¸è½ä¸ºç©º")] |
| | | public long? Id { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åè·ååä¸ªåæ° |
| | | /// </summary> |
| | | public class QueryeWmsControlRuleInput : BaseId |
| | | { |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core.Util.LowCode.Dto; |
| | | using System; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åè¾åºåæ° |
| | | /// </summary> |
| | | public class WmsControlRuleOutput |
| | | { |
| | | /// <summary> |
| | | /// è§åç¼å· |
| | | /// </summary> |
| | | public string RuleCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è§ååç§° |
| | | /// </summary> |
| | | public string RuleName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è§åæè¿° |
| | | /// </summary> |
| | | public string RuleDesc { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | public bool IsDisabled { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Idä¸»é® |
| | | /// </summary> |
| | | public long? Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建æ¶é´ |
| | | /// </summary> |
| | | public DateTimeOffset? CreatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¶é´ |
| | | /// </summary> |
| | | public DateTimeOffset? UpdatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建è
åç§° |
| | | /// </summary> |
| | | public string CreatedUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹è
åç§° |
| | | /// </summary> |
| | | public string UpdatedUserName { get; set; } |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using System.Collections.Generic; |
| | | using System.Threading.Tasks; |
| | | using Microsoft.AspNetCore.Http; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | public interface IWmsControlRuleService |
| | | { |
| | | Task<WmsControlRuleOutput> Get([FromQuery] QueryeWmsControlRuleInput input); |
| | | Task<List<WmsControlRuleOutput>> List([FromQuery] WmsControlRuleInput input); |
| | | Task<PageResult<WmsControlRuleOutput>> Page([FromQuery] WmsControlRuleSearch input); |
| | | Task<List<WmsControlRuleOutput>> ListNonPageAsync([FromQuery] WmsControlRuleSearchNonPage input); |
| | | |
| | | Task Add(AddWmsControlRuleInput input); |
| | | Task Update(UpdateWmsControlRuleInput input); |
| | | Task Delete(DeleteWmsControlRuleInput input); |
| | | Task<int> ImportExcelAsync(IFormFile file); |
| | | IActionResult DownloadExcelTemplate(string version); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Mapster; |
| | | using Admin.NET.Core; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | public class WmsControlRuleMapper : IRegister |
| | | { |
| | | public void Register(TypeAdapterConfig config) |
| | | { |
| | | config.ForType<AddWmsControlRuleInput, WmsControlRule>() |
| | | ; |
| | | config.ForType<UpdateWmsControlRuleInput, WmsControlRule>() |
| | | ; |
| | | config.ForType<WmsControlRule, WmsControlRuleOutput>() |
| | | ; |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Furion.DatabaseAccessor; |
| | | using Furion.DatabaseAccessor.Extensions; |
| | | using Furion.DependencyInjection; |
| | | using Furion.DynamicApiController; |
| | | using Furion.FriendlyException; |
| | | using Admin.NET.Core; |
| | | using Mapster; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using Microsoft.EntityFrameworkCore; |
| | | using System.Linq.Dynamic.Core; |
| | | using Microsoft.AspNetCore.Http; |
| | | using System.Text; |
| | | using System.Web; |
| | | using System.ComponentModel; |
| | | using System.Data; |
| | | namespace Admin.NET.Application |
| | | { |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åæå¡ |
| | | /// </summary> |
| | | [ApiDescriptionSettings("WmsBase", Name = "WmsControlRule", Order = 100)] |
| | | [Route("api")] |
| | | public class WmsControlRuleService : IWmsControlRuleService, IDynamicApiController, ITransient |
| | | { |
| | | private readonly IRepository<WmsControlRule,MasterDbContextLocator> _wmsControlRuleRep; |
| | | private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep; |
| | | private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep; |
| | | private readonly ISysExcelTemplateService _sysExcelTemplateService; |
| | | private readonly static object _lock = new(); |
| | | |
| | | public WmsControlRuleService( |
| | | IRepository<WmsControlRule,MasterDbContextLocator> wmsControlRuleRep |
| | | ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep |
| | | ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep |
| | | ,ISysExcelTemplateService sysExcelTemplateService |
| | | ) |
| | | { |
| | | _wmsControlRuleRep = wmsControlRuleRep; |
| | | _sysDictTypeRep = sysDictTypeRep; |
| | | _sysDictDataRep = sysDictDataRep; |
| | | _sysExcelTemplateService = sysExcelTemplateService; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å页æ¥è¯¢æ§å¶å±æ§è§å |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpGet("WmsControlRule/page")] |
| | | public async Task<PageResult<WmsControlRuleOutput>> Page([FromQuery] WmsControlRuleSearch input) |
| | | { |
| | | var wmsControlRules = await _wmsControlRuleRep.DetachedEntities |
| | | .Where(!string.IsNullOrEmpty(input.RuleCode), u => u.RuleCode == input.RuleCode) |
| | | .Where(!string.IsNullOrEmpty(input.RuleName), u => u.RuleName == input.RuleName) |
| | | .Where(!string.IsNullOrEmpty(input.RuleDesc), u => u.RuleDesc == input.RuleDesc) |
| | | .Where(input.IsDisabled != null, u => u.IsDisabled == input.IsDisabled) |
| | | .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1])) |
| | | .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1])) |
| | | .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName) |
| | | .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName) |
| | | .OrderBy(PageInputOrder.OrderBuilder<WmsControlRuleSearch>(input)) |
| | | .ProjectToType<WmsControlRuleOutput>() |
| | | .ToADPagedListAsync(input.PageNo, input.PageSize); |
| | | return wmsControlRules; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä¸å页æ¥è¯¢æ§å¶å±æ§è§åå表 |
| | | /// </summary> |
| | | /// <param name="input">æ§å¶å±æ§è§åæ¥è¯¢åæ°</param> |
| | | /// <returns>(æ§å¶å±æ§è§å)å®ä¾å表</returns> |
| | | [HttpGet("WmsControlRule/listNonPage")] |
| | | public async Task<List<WmsControlRuleOutput>> ListNonPageAsync([FromQuery] WmsControlRuleSearchNonPage input) |
| | | { |
| | | var pRuleCode = input.RuleCode?.Trim() ?? ""; |
| | | var pRuleName = input.RuleName?.Trim() ?? ""; |
| | | var pRuleDesc = input.RuleDesc?.Trim() ?? ""; |
| | | var pIsDisabled = input.IsDisabled; |
| | | var pCreatedTime = input.CreatedTime; |
| | | var pUpdatedTime = input.UpdatedTime; |
| | | var pCreatedUserName = input.CreatedUserName?.Trim() ?? ""; |
| | | var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? ""; |
| | | var wmsControlRules = await _wmsControlRuleRep.DetachedEntities |
| | | .Where(!string.IsNullOrEmpty(pRuleCode), u => u.RuleCode == pRuleCode) |
| | | .Where(!string.IsNullOrEmpty(pRuleName), u => u.RuleName == pRuleName) |
| | | .Where(!string.IsNullOrEmpty(pRuleDesc), u => u.RuleDesc == pRuleDesc) |
| | | .Where(pIsDisabled != null, u => u.IsDisabled == pIsDisabled) |
| | | .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1])) |
| | | .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1])) |
| | | .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName) |
| | | .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName) |
| | | .OrderBy(PageInputOrder.OrderNonPageBuilder(input)) |
| | | .ProjectToType<WmsControlRuleOutput>() |
| | | .ToListAsync(); |
| | | return wmsControlRules; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åæ§å¶å±æ§è§å |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpGet("WmsControlRule/detail")] |
| | | public async Task<WmsControlRuleOutput> Get([FromQuery] QueryeWmsControlRuleInput input) |
| | | { |
| | | return (await _wmsControlRuleRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsControlRuleOutput>(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åæ§å¶å±æ§è§åå表 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpGet("WmsControlRule/list")] |
| | | public async Task<List<WmsControlRuleOutput>> List([FromQuery] WmsControlRuleInput input) |
| | | { |
| | | return await _wmsControlRuleRep.DetachedEntities.ProjectToType<WmsControlRuleOutput>().ToListAsync(); |
| | | } |
| | | |
| | | #region å¢ãå ãæ¹ |
| | | |
| | | /// <summary> |
| | | /// å¢å æ§å¶å±æ§è§å |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost("WmsControlRule/add")] |
| | | public async Task Add(AddWmsControlRuleInput input) |
| | | { |
| | | var wmsControlRule = input.Adapt<WmsControlRule>(); |
| | | //éªè¯ |
| | | await CheckExisit(wmsControlRule); |
| | | |
| | | wmsControlRule.CreatedUserId = wmsControlRule.UpdatedUserId = SysHelper.GetUserId(); |
| | | wmsControlRule.CreatedUserName = wmsControlRule.UpdatedUserName = SysHelper.GetUserName(); |
| | | wmsControlRule.CreatedTime = wmsControlRule.UpdatedTime = SysHelper.GetNowTime(); |
| | | await _wmsControlRuleRep.InsertAsync(wmsControlRule); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å 餿§å¶å±æ§è§å |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost("WmsControlRule/delete")] |
| | | public async Task Delete(DeleteWmsControlRuleInput input) |
| | | { |
| | | var wmsControlRule = await _wmsControlRuleRep.FirstOrDefaultAsync(u => u.Id == input.Id); |
| | | await _wmsControlRuleRep.DeleteAsync(wmsControlRule); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ§å¶å±æ§è§å |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost("WmsControlRule/edit")] |
| | | public async Task Update(UpdateWmsControlRuleInput input) |
| | | { |
| | | var isExist = await _wmsControlRuleRep.AnyAsync(u => u.Id == input.Id, false); |
| | | if (!isExist) throw Oops.Oh(ErrorCode.D1002); |
| | | |
| | | var wmsControlRule = input.Adapt<WmsControlRule>(); |
| | | //éªè¯ |
| | | await CheckExisit(wmsControlRule,true); |
| | | |
| | | wmsControlRule.UpdatedUserId = SysHelper.GetUserId(); |
| | | wmsControlRule.UpdatedUserName = SysHelper.GetUserName(); |
| | | wmsControlRule.UpdatedTime = SysHelper.GetNowTime(); |
| | | await _wmsControlRuleRep.UpdateAsync(wmsControlRule,ignoreNullValues:true); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 导å
¥ |
| | | |
| | | /// <summary> |
| | | /// Excel模æ¿å¯¼å
¥æ§å¶å±æ§è§ååè½ |
| | | /// </summary> |
| | | /// <param name="file">Excelæ¨¡æ¿æä»¶</param> |
| | | /// <returns>导å
¥çè®°å½æ°</returns> |
| | | [HttpPost("WmsControlRule/importExcel")] |
| | | public async Task<int> ImportExcelAsync(IFormFile file) |
| | | { |
| | | int _HeadStartLine = 2;//第1è¡æ¯è¯´æ,第2è¡æ¯åå |
| | | int _DataStartLine = 3;//第3è¡å¼å§æ¯æ°æ® |
| | | |
| | | DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine); |
| | | var addList =await CommonImport(importDataTable, _DataStartLine); |
| | | |
| | | lock (_lock) |
| | | { |
| | | _wmsControlRuleRep.InsertAsync(addList); |
| | | |
| | | } |
| | | await Task.CompletedTask; |
| | | return addList.Count; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// DataTable转æ¢å®ä½å¯¹è±¡å表 |
| | | /// </summary> |
| | | /// <param name="dataTable"></param> |
| | | /// <param name="dataStartLine">模çååå¼å§è¡</param> |
| | | /// <returns></returns> |
| | | private async Task<List<WmsControlRule>> CommonImport(DataTable dataTable, int dataStartLine) |
| | | { |
| | | |
| | | var details = new List<WmsControlRule>(); |
| | | int index = dataStartLine;//模çååå¼å§è¡ |
| | | foreach (System.Data.DataRow row in dataTable.Rows) |
| | | { |
| | | index++; |
| | | |
| | | //导å
¥æ¨¡çå®å¶å代ç ï¼æ¿æ¢æ¨¡ç使ç¨ï¼ |
| | | |
| | | var addItem = new WmsControlRule() |
| | | { |
| | | CreatedTime = SysHelper.GetNowTime(), |
| | | CreatedUserId = SysHelper.GetUserId(), |
| | | CreatedUserName = SysHelper.GetUserName(), |
| | | UpdatedTime = SysHelper.GetNowTime(), |
| | | UpdatedUserId = SysHelper.GetUserId(), |
| | | UpdatedUserName = SysHelper.GetUserName() |
| | | }; |
| | | #region å®ä¹åé |
| | | var _RuleCode = "";//è§åç¼å· |
| | | var _RuleName = "";//è§ååç§° |
| | | var _RuleDesc = "";//è§åæè¿° |
| | | var _IsDisabled = "";//æ¯å¦ç¦ç¨ |
| | | var _Id = "";//Idä¸»é® |
| | | #endregion |
| | | |
| | | |
| | | #region åå¼ |
| | | _RuleCode = row["è§åç¼å·"]?.ToString() ; |
| | | _RuleName = row["è§ååç§°"]?.ToString() ; |
| | | _RuleDesc = row["è§åæè¿°"]?.ToString() ; |
| | | _IsDisabled = row["æ¯å¦ç¦ç¨"]?.ToString() ; |
| | | _Id = row["Id主é®"]?.ToString() ; |
| | | #endregion |
| | | |
| | | |
| | | #region éªè¯ |
| | | |
| | | if (string.IsNullOrEmpty(_RuleCode)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[è§åç¼å·]{_RuleCode}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_RuleCode)) |
| | | { |
| | | addItem.RuleCode = (string)_RuleCode; |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_RuleName)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[è§ååç§°]{_RuleName}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_RuleName)) |
| | | { |
| | | addItem.RuleName = (string)_RuleName; |
| | | } |
| | | if(!string.IsNullOrEmpty(_RuleDesc)) |
| | | { |
| | | addItem.RuleDesc = (string)_RuleDesc; |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_IsDisabled)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¯å¦ç¦ç¨]{_IsDisabled}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_IsDisabled)) |
| | | { |
| | | if(!_IsDisabled.Equals("æ¯") && !_IsDisabled.Equals("å¦")) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¯å¦ç¦ç¨]{_IsDisabled}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | else |
| | | { |
| | | bool outIsDisabled = _IsDisabled.Equals("æ¯") ? true : false; |
| | | addItem.IsDisabled = outIsDisabled; |
| | | } |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | if (!long.TryParse(_Id, out long outId)&&!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[Id主é®]{_Id}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outId <= 0&&!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[Id主é®]{_Id}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.Id = outId; |
| | | } |
| | | |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | details.Add(addItem); |
| | | } |
| | | //éªé |
| | | await CheckExisitForImport(details); |
| | | |
| | | return details; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®çæ¬ä¸è½½æ§å¶å±æ§è§åçExcel导å
¥æ¨¡æ¿ |
| | | /// </summary> |
| | | /// <param name="version">模æ¿çæ¬</param> |
| | | /// <returns>ä¸è½½çæ¨¡æ¿æä»¶</returns> |
| | | [HttpGet("WmsControlRule/downloadExcelTemplate")] |
| | | public IActionResult DownloadExcelTemplate([FromQuery] string version) |
| | | { |
| | | string _path = TemplateConst.EXCEL_TEMPLATEFILE_导å
¥æ¨¡çè·¯å¾ + $"\\WmsControlRule{TemplateConst.EXCEL_TEMPLATEFILE_导å
¥æ¨¡çåç§°åç¼}.xlsx"; |
| | | var fileName = HttpUtility.UrlEncode($"导å
¥æ¨¡æ¿(æ§å¶å±æ§è§å).xlsx", Encoding.GetEncoding("UTF-8")); |
| | | return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName }; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ç§ææ¹æ³ |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®èå主é®éªè¯æ°æ®æ¯å¦å·²åå¨-æ°æ®åº |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <param name="isEdit"></param> |
| | | /// <returns></returns> |
| | | private async Task CheckExisit( WmsControlRule input,bool isEdit=false) |
| | | { |
| | | |
| | | |
| | | |
| | | bool isExist = false; |
| | | if (!isEdit)//æ°å¢ |
| | | { |
| | | //æ°æ®æ¯å¦åå¨éå¤ |
| | | isExist = await _wmsControlRuleRep.AnyAsync(u => |
| | | u.RuleCode.Equals(input.RuleCode) |
| | | ,false); |
| | | } |
| | | else//ç¼è¾ |
| | | { |
| | | |
| | | |
| | | |
| | | //å½åç¼è¾æ°æ®ä»¥å¤æ¯å¦åå¨éå¤ |
| | | isExist = await _wmsControlRuleRep.AnyAsync(u => |
| | | u.Id != input.Id |
| | | &&u.RuleCode.Equals(input.RuleCode) |
| | | ,false); |
| | | } |
| | | |
| | | |
| | | |
| | | if (isExist) throw Oops.Oh(ErrorCode.E0001); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®èå主é®éªè¯æ°æ®æ¯å¦å·²åå¨-导å
¥æ¶éªè¯ |
| | | /// </summary> |
| | | /// <param name="inputs"></param> |
| | | /// <returns></returns> |
| | | private async Task CheckExisitForImport(List<WmsControlRule> inputs) |
| | | { |
| | | //æ ¹æ®èå主é®éªè¯è¡¨æ ¼ä¸ä¸æ¯å¦å·²åå¨ç¸åæ°æ® |
| | | if (inputs?.Count <= 0) |
| | | { |
| | | throw Oops.Oh($"导å
¥æ°æ®ä¸è½ä¸ºç©º"); |
| | | } |
| | | //æ°æ®æ¯å¦éå¤ |
| | | var existExcelItem = inputs.GroupBy(g => new { |
| | | g.RuleCode |
| | | }) |
| | | .Where(g => g.Count() > 1) |
| | | .Select(s => new { |
| | | s.Key.RuleCode |
| | | }).FirstOrDefault(); |
| | | if (existExcelItem != null) |
| | | { |
| | | var wmsControlRule = existExcelItem.Adapt<WmsControlRule>(); |
| | | var item= existExcelItem.Adapt<WmsControlRule>(); |
| | | throw Oops.Oh($"导å
¥çè¡¨æ ¼ä¸,è§åç¼å·[{item.RuleCode}]å·²åå¨"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | //æ ¹æ®èå主é®éªè¯æ°æ®åºä¸æ¯å¦å·²åå¨ç¸åæ°æ® |
| | | var existDBItem = await _wmsControlRuleRep.DetachedEntities.FirstOrDefaultAsync(w=> |
| | | inputs.Select(s=>"" |
| | | +s.RuleCode |
| | | ) |
| | | .Contains("" |
| | | +w.RuleCode |
| | | )); |
| | | if (existDBItem != null) |
| | | { |
| | | var wmsControlRule = existExcelItem.Adapt<WmsControlRule>(); |
| | | var item= existExcelItem.Adapt<WmsControlRule>(); |
| | | throw Oops.Oh($"ç³»ç»ä¸,è§åç¼å·[{item.RuleCode}]å·²åå¨"); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core; |
| | | using Admin.NET.Core.Service; |
| | | using System.ComponentModel.DataAnnotations; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åæç»æ¥è¯¢åæ° |
| | | /// </summary> |
| | | public class WmsControlRuleDetailSearch : PageInputBase |
| | | { |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åID |
| | | /// </summary> |
| | | public virtual long? ControlRuleId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æé«åºå |
| | | /// </summary> |
| | | public virtual decimal? MaxImumqty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æä½åºå |
| | | /// </summary> |
| | | public virtual decimal? MinImumqty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å®å
¨åºå |
| | | /// </summary> |
| | | public virtual decimal? SafeImumqty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æå°åºé¾ |
| | | /// </summary> |
| | | public virtual decimal? MinStorageAge { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æå¤§åºé¾ |
| | | /// </summary> |
| | | public virtual decimal? MaxStorageAge { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦å
æ£ |
| | | /// </summary> |
| | | public virtual bool? IsNotChek { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿è´¨æå¤©æ° |
| | | /// </summary> |
| | | public virtual decimal? ShelfLifeDays { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | public virtual bool? IsDisabled { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建æ¶é´ |
| | | /// </summary> |
| | | public virtual List<string> CreatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¶é´ |
| | | /// </summary> |
| | | public virtual List<string> UpdatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建è
åç§° |
| | | /// </summary> |
| | | public virtual string CreatedUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹è
åç§° |
| | | /// </summary> |
| | | public virtual string UpdatedUserName { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åæç»ä¸å页æ¥è¯¢åæ° |
| | | /// </summary> |
| | | public class WmsControlRuleDetailSearchNonPage : PageInputNonPageBase |
| | | { |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åID |
| | | /// </summary> |
| | | public virtual long? ControlRuleId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æé«åºå |
| | | /// </summary> |
| | | public virtual decimal? MaxImumqty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æä½åºå |
| | | /// </summary> |
| | | public virtual decimal? MinImumqty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å®å
¨åºå |
| | | /// </summary> |
| | | public virtual decimal? SafeImumqty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æå°åºé¾ |
| | | /// </summary> |
| | | public virtual decimal? MinStorageAge { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æå¤§åºé¾ |
| | | /// </summary> |
| | | public virtual decimal? MaxStorageAge { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦å
æ£ |
| | | /// </summary> |
| | | public virtual bool? IsNotChek { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿è´¨æå¤©æ° |
| | | /// </summary> |
| | | public virtual decimal? ShelfLifeDays { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | public virtual bool? IsDisabled { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建æ¶é´ |
| | | /// </summary> |
| | | public virtual List<DateTimeOffset>? CreatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¶é´ |
| | | /// </summary> |
| | | public virtual List<DateTimeOffset>? UpdatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建è
åç§° |
| | | /// </summary> |
| | | public virtual string CreatedUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹è
åç§° |
| | | /// </summary> |
| | | public virtual string UpdatedUserName { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åæç»è¾å
¥åæ° |
| | | /// </summary> |
| | | public class WmsControlRuleDetailInput |
| | | { |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åID |
| | | /// </summary> |
| | | [Required(ErrorMessage = "æ§å¶å±æ§è§åIDä¸è½ä¸ºç©º")] |
| | | public virtual long ControlRuleId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æé«åºå |
| | | /// </summary> |
| | | [Required(ErrorMessage = "æé«åºåä¸è½ä¸ºç©º")] |
| | | public virtual decimal MaxImumqty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æä½åºå |
| | | /// </summary> |
| | | [Required(ErrorMessage = "æä½åºåä¸è½ä¸ºç©º")] |
| | | public virtual decimal MinImumqty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å®å
¨åºå |
| | | /// </summary> |
| | | [Required(ErrorMessage = "å®å
¨åºåä¸è½ä¸ºç©º")] |
| | | public virtual decimal SafeImumqty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æå°åºé¾ |
| | | /// </summary> |
| | | [Required(ErrorMessage = "æå°åºé¾ä¸è½ä¸ºç©º")] |
| | | public virtual decimal MinStorageAge { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æå¤§åºé¾ |
| | | /// </summary> |
| | | [Required(ErrorMessage = "æå¤§åºé¾ä¸è½ä¸ºç©º")] |
| | | public virtual decimal MaxStorageAge { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦å
æ£ |
| | | /// </summary> |
| | | [Required(ErrorMessage = "æ¯å¦å
æ£ä¸è½ä¸ºç©º")] |
| | | public virtual bool IsNotChek { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿è´¨æå¤©æ° |
| | | /// </summary> |
| | | [Required(ErrorMessage = "ä¿è´¨æå¤©æ°ä¸è½ä¸ºç©º")] |
| | | public virtual decimal ShelfLifeDays { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | [Required(ErrorMessage = "æ¯å¦ç¦ç¨ä¸è½ä¸ºç©º")] |
| | | public virtual bool IsDisabled { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åæç»æ°å¢åæ° |
| | | /// </summary> |
| | | public class AddWmsControlRuleDetailInput : WmsControlRuleDetailInput |
| | | { |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åæç»å é¤åæ° |
| | | /// </summary> |
| | | public class DeleteWmsControlRuleDetailInput : BaseId |
| | | { |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åæç»æ´æ°åæ° |
| | | /// </summary> |
| | | public class UpdateWmsControlRuleDetailInput : WmsControlRuleDetailInput |
| | | { |
| | | /// <summary> |
| | | /// Idä¸»é® |
| | | /// </summary> |
| | | [Required(ErrorMessage = "Id主é®ä¸è½ä¸ºç©º")] |
| | | public long? Id { get; set; } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åæç»è·ååä¸ªåæ° |
| | | /// </summary> |
| | | public class QueryeWmsControlRuleDetailInput : BaseId |
| | | { |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core.Util.LowCode.Dto; |
| | | using System; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åæç»è¾åºåæ° |
| | | /// </summary> |
| | | public class WmsControlRuleDetailOutput |
| | | { |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åID |
| | | /// </summary> |
| | | public long ControlRuleId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æé«åºå |
| | | /// </summary> |
| | | public decimal MaxImumqty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æä½åºå |
| | | /// </summary> |
| | | public decimal MinImumqty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å®å
¨åºå |
| | | /// </summary> |
| | | public decimal SafeImumqty { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æå°åºé¾ |
| | | /// </summary> |
| | | public decimal MinStorageAge { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æå¤§åºé¾ |
| | | /// </summary> |
| | | public decimal MaxStorageAge { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦å
æ£ |
| | | /// </summary> |
| | | public bool IsNotChek { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿è´¨æå¤©æ° |
| | | /// </summary> |
| | | public decimal ShelfLifeDays { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦ç¦ç¨ |
| | | /// </summary> |
| | | public bool IsDisabled { get; set; } |
| | | |
| | | /// <summary> |
| | | /// Idä¸»é® |
| | | /// </summary> |
| | | public long? Id { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建æ¶é´ |
| | | /// </summary> |
| | | public DateTimeOffset? CreatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ¶é´ |
| | | /// </summary> |
| | | public DateTimeOffset? UpdatedTime { get; set; } |
| | | |
| | | /// <summary> |
| | | /// å建è
åç§° |
| | | /// </summary> |
| | | public string CreatedUserName { get; set; } |
| | | |
| | | /// <summary> |
| | | /// ä¿®æ¹è
åç§° |
| | | /// </summary> |
| | | public string UpdatedUserName { get; set; } |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using System.Collections.Generic; |
| | | using System.Threading.Tasks; |
| | | using Microsoft.AspNetCore.Http; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | public interface IWmsControlRuleDetailService |
| | | { |
| | | Task<WmsControlRuleDetailOutput> Get([FromQuery] QueryeWmsControlRuleDetailInput input); |
| | | Task<List<WmsControlRuleDetailOutput>> List([FromQuery] WmsControlRuleDetailInput input); |
| | | Task<PageResult<WmsControlRuleDetailOutput>> Page([FromQuery] WmsControlRuleDetailSearch input); |
| | | Task<List<WmsControlRuleDetailOutput>> ListNonPageAsync([FromQuery] WmsControlRuleDetailSearchNonPage input); |
| | | |
| | | Task Add(AddWmsControlRuleDetailInput input); |
| | | Task Update(UpdateWmsControlRuleDetailInput input); |
| | | Task Delete(DeleteWmsControlRuleDetailInput input); |
| | | Task<int> ImportExcelAsync(IFormFile file); |
| | | IActionResult DownloadExcelTemplate(string version); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Mapster; |
| | | using Admin.NET.Core; |
| | | |
| | | namespace Admin.NET.Application |
| | | { |
| | | public class WmsControlRuleDetailMapper : IRegister |
| | | { |
| | | public void Register(TypeAdapterConfig config) |
| | | { |
| | | config.ForType<AddWmsControlRuleDetailInput, WmsControlRuleDetail>() |
| | | ; |
| | | config.ForType<UpdateWmsControlRuleDetailInput, WmsControlRuleDetail>() |
| | | ; |
| | | config.ForType<WmsControlRuleDetail, WmsControlRuleDetailOutput>() |
| | | ; |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Furion.DatabaseAccessor; |
| | | using Furion.DatabaseAccessor.Extensions; |
| | | using Furion.DependencyInjection; |
| | | using Furion.DynamicApiController; |
| | | using Furion.FriendlyException; |
| | | using Admin.NET.Core; |
| | | using Mapster; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using Microsoft.EntityFrameworkCore; |
| | | using System.Linq.Dynamic.Core; |
| | | using Microsoft.AspNetCore.Http; |
| | | using System.Text; |
| | | using System.Web; |
| | | using System.ComponentModel; |
| | | using System.Data; |
| | | namespace Admin.NET.Application |
| | | { |
| | | /// <summary> |
| | | /// æ§å¶å±æ§è§åæç»æå¡ |
| | | /// </summary> |
| | | [ApiDescriptionSettings("WmsBase", Name = "WmsControlRuleDetail", Order = 100)] |
| | | [Route("api")] |
| | | public class WmsControlRuleDetailService : IWmsControlRuleDetailService, IDynamicApiController, ITransient |
| | | { |
| | | private readonly IRepository<WmsControlRuleDetail,MasterDbContextLocator> _wmsControlRuleDetailRep; |
| | | private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep; |
| | | private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep; |
| | | private readonly ISysExcelTemplateService _sysExcelTemplateService; |
| | | private readonly static object _lock = new(); |
| | | |
| | | public WmsControlRuleDetailService( |
| | | IRepository<WmsControlRuleDetail,MasterDbContextLocator> wmsControlRuleDetailRep |
| | | ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep |
| | | ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep |
| | | ,ISysExcelTemplateService sysExcelTemplateService |
| | | ) |
| | | { |
| | | _wmsControlRuleDetailRep = wmsControlRuleDetailRep; |
| | | _sysDictTypeRep = sysDictTypeRep; |
| | | _sysDictDataRep = sysDictDataRep; |
| | | _sysExcelTemplateService = sysExcelTemplateService; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å页æ¥è¯¢æ§å¶å±æ§è§åæç» |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpGet("WmsControlRuleDetail/page")] |
| | | public async Task<PageResult<WmsControlRuleDetailOutput>> Page([FromQuery] WmsControlRuleDetailSearch input) |
| | | { |
| | | var wmsControlRuleDetails = await _wmsControlRuleDetailRep.DetachedEntities |
| | | .Where(input.ControlRuleId != null, u => u.ControlRuleId == input.ControlRuleId) |
| | | .Where(input.MaxImumqty != null, u => u.MaxImumqty == input.MaxImumqty) |
| | | .Where(input.MinImumqty != null, u => u.MinImumqty == input.MinImumqty) |
| | | .Where(input.SafeImumqty != null, u => u.SafeImumqty == input.SafeImumqty) |
| | | .Where(input.MinStorageAge != null, u => u.MinStorageAge == input.MinStorageAge) |
| | | .Where(input.MaxStorageAge != null, u => u.MaxStorageAge == input.MaxStorageAge) |
| | | .Where(input.IsNotChek != null, u => u.IsNotChek == input.IsNotChek) |
| | | .Where(input.ShelfLifeDays != null, u => u.ShelfLifeDays == input.ShelfLifeDays) |
| | | .Where(input.IsDisabled != null, u => u.IsDisabled == input.IsDisabled) |
| | | .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1])) |
| | | .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1])) |
| | | .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName) |
| | | .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName) |
| | | .OrderBy(PageInputOrder.OrderBuilder<WmsControlRuleDetailSearch>(input)) |
| | | .ProjectToType<WmsControlRuleDetailOutput>() |
| | | .ToADPagedListAsync(input.PageNo, input.PageSize); |
| | | return wmsControlRuleDetails; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// ä¸å页æ¥è¯¢æ§å¶å±æ§è§åæç»å表 |
| | | /// </summary> |
| | | /// <param name="input">æ§å¶å±æ§è§åæç»æ¥è¯¢åæ°</param> |
| | | /// <returns>(æ§å¶å±æ§è§åæç»)å®ä¾å表</returns> |
| | | [HttpGet("WmsControlRuleDetail/listNonPage")] |
| | | public async Task<List<WmsControlRuleDetailOutput>> ListNonPageAsync([FromQuery] WmsControlRuleDetailSearchNonPage input) |
| | | { |
| | | var pControlRuleId = input.ControlRuleId; |
| | | var pMaxImumqty = input.MaxImumqty; |
| | | var pMinImumqty = input.MinImumqty; |
| | | var pSafeImumqty = input.SafeImumqty; |
| | | var pMinStorageAge = input.MinStorageAge; |
| | | var pMaxStorageAge = input.MaxStorageAge; |
| | | var pIsNotChek = input.IsNotChek; |
| | | var pShelfLifeDays = input.ShelfLifeDays; |
| | | var pIsDisabled = input.IsDisabled; |
| | | var pCreatedTime = input.CreatedTime; |
| | | var pUpdatedTime = input.UpdatedTime; |
| | | var pCreatedUserName = input.CreatedUserName?.Trim() ?? ""; |
| | | var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? ""; |
| | | var wmsControlRuleDetails = await _wmsControlRuleDetailRep.DetachedEntities |
| | | .Where(pControlRuleId != null, u => u.ControlRuleId == pControlRuleId) |
| | | .Where(pMaxImumqty != null, u => u.MaxImumqty == pMaxImumqty) |
| | | .Where(pMinImumqty != null, u => u.MinImumqty == pMinImumqty) |
| | | .Where(pSafeImumqty != null, u => u.SafeImumqty == pSafeImumqty) |
| | | .Where(pMinStorageAge != null, u => u.MinStorageAge == pMinStorageAge) |
| | | .Where(pMaxStorageAge != null, u => u.MaxStorageAge == pMaxStorageAge) |
| | | .Where(pIsNotChek != null, u => u.IsNotChek == pIsNotChek) |
| | | .Where(pShelfLifeDays != null, u => u.ShelfLifeDays == pShelfLifeDays) |
| | | .Where(pIsDisabled != null, u => u.IsDisabled == pIsDisabled) |
| | | .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1])) |
| | | .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1])) |
| | | .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName) |
| | | .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName) |
| | | .OrderBy(PageInputOrder.OrderNonPageBuilder(input)) |
| | | .ProjectToType<WmsControlRuleDetailOutput>() |
| | | .ToListAsync(); |
| | | return wmsControlRuleDetails; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åæ§å¶å±æ§è§åæç» |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpGet("WmsControlRuleDetail/detail")] |
| | | public async Task<WmsControlRuleDetailOutput> Get([FromQuery] QueryeWmsControlRuleDetailInput input) |
| | | { |
| | | return (await _wmsControlRuleDetailRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsControlRuleDetailOutput>(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è·åæ§å¶å±æ§è§åæç»å表 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpGet("WmsControlRuleDetail/list")] |
| | | public async Task<List<WmsControlRuleDetailOutput>> List([FromQuery] WmsControlRuleDetailInput input) |
| | | { |
| | | return await _wmsControlRuleDetailRep.DetachedEntities.ProjectToType<WmsControlRuleDetailOutput>().ToListAsync(); |
| | | } |
| | | |
| | | #region å¢ãå ãæ¹ |
| | | |
| | | /// <summary> |
| | | /// å¢å æ§å¶å±æ§è§åæç» |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost("WmsControlRuleDetail/add")] |
| | | public async Task Add(AddWmsControlRuleDetailInput input) |
| | | { |
| | | var wmsControlRuleDetail = input.Adapt<WmsControlRuleDetail>(); |
| | | //éªè¯ |
| | | await CheckExisit(wmsControlRuleDetail); |
| | | |
| | | wmsControlRuleDetail.CreatedUserId = wmsControlRuleDetail.UpdatedUserId = SysHelper.GetUserId(); |
| | | wmsControlRuleDetail.CreatedUserName = wmsControlRuleDetail.UpdatedUserName = SysHelper.GetUserName(); |
| | | wmsControlRuleDetail.CreatedTime = wmsControlRuleDetail.UpdatedTime = SysHelper.GetNowTime(); |
| | | await _wmsControlRuleDetailRep.InsertAsync(wmsControlRuleDetail); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å 餿§å¶å±æ§è§åæç» |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost("WmsControlRuleDetail/delete")] |
| | | public async Task Delete(DeleteWmsControlRuleDetailInput input) |
| | | { |
| | | var wmsControlRuleDetail = await _wmsControlRuleDetailRep.FirstOrDefaultAsync(u => u.Id == input.Id); |
| | | await _wmsControlRuleDetailRep.DeleteAsync(wmsControlRuleDetail); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ´æ°æ§å¶å±æ§è§åæç» |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | | [HttpPost("WmsControlRuleDetail/edit")] |
| | | public async Task Update(UpdateWmsControlRuleDetailInput input) |
| | | { |
| | | var isExist = await _wmsControlRuleDetailRep.AnyAsync(u => u.Id == input.Id, false); |
| | | if (!isExist) throw Oops.Oh(ErrorCode.D1002); |
| | | |
| | | var wmsControlRuleDetail = input.Adapt<WmsControlRuleDetail>(); |
| | | //éªè¯ |
| | | await CheckExisit(wmsControlRuleDetail,true); |
| | | |
| | | wmsControlRuleDetail.UpdatedUserId = SysHelper.GetUserId(); |
| | | wmsControlRuleDetail.UpdatedUserName = SysHelper.GetUserName(); |
| | | wmsControlRuleDetail.UpdatedTime = SysHelper.GetNowTime(); |
| | | await _wmsControlRuleDetailRep.UpdateAsync(wmsControlRuleDetail,ignoreNullValues:true); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 导å
¥ |
| | | |
| | | /// <summary> |
| | | /// Excel模æ¿å¯¼å
¥æ§å¶å±æ§è§åæç»åè½ |
| | | /// </summary> |
| | | /// <param name="file">Excelæ¨¡æ¿æä»¶</param> |
| | | /// <returns>导å
¥çè®°å½æ°</returns> |
| | | [HttpPost("WmsControlRuleDetail/importExcel")] |
| | | public async Task<int> ImportExcelAsync(IFormFile file) |
| | | { |
| | | int _HeadStartLine = 2;//第1è¡æ¯è¯´æ,第2è¡æ¯åå |
| | | int _DataStartLine = 3;//第3è¡å¼å§æ¯æ°æ® |
| | | |
| | | DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine); |
| | | var addList =await CommonImport(importDataTable, _DataStartLine); |
| | | |
| | | lock (_lock) |
| | | { |
| | | _wmsControlRuleDetailRep.InsertAsync(addList); |
| | | |
| | | } |
| | | await Task.CompletedTask; |
| | | return addList.Count; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// DataTable转æ¢å®ä½å¯¹è±¡å表 |
| | | /// </summary> |
| | | /// <param name="dataTable"></param> |
| | | /// <param name="dataStartLine">模çååå¼å§è¡</param> |
| | | /// <returns></returns> |
| | | private async Task<List<WmsControlRuleDetail>> CommonImport(DataTable dataTable, int dataStartLine) |
| | | { |
| | | |
| | | var details = new List<WmsControlRuleDetail>(); |
| | | int index = dataStartLine;//模çååå¼å§è¡ |
| | | foreach (System.Data.DataRow row in dataTable.Rows) |
| | | { |
| | | index++; |
| | | |
| | | //导å
¥æ¨¡çå®å¶å代ç ï¼æ¿æ¢æ¨¡ç使ç¨ï¼ |
| | | |
| | | var addItem = new WmsControlRuleDetail() |
| | | { |
| | | CreatedTime = SysHelper.GetNowTime(), |
| | | CreatedUserId = SysHelper.GetUserId(), |
| | | CreatedUserName = SysHelper.GetUserName(), |
| | | UpdatedTime = SysHelper.GetNowTime(), |
| | | UpdatedUserId = SysHelper.GetUserId(), |
| | | UpdatedUserName = SysHelper.GetUserName() |
| | | }; |
| | | #region å®ä¹åé |
| | | var _ControlRuleId = "";//æ§å¶å±æ§è§åID |
| | | var _MaxImumqty = "";//æé«åºå |
| | | var _MinImumqty = "";//æä½åºå |
| | | var _SafeImumqty = "";//å®å
¨åºå |
| | | var _MinStorageAge = "";//æå°åºé¾ |
| | | var _MaxStorageAge = "";//æå¤§åºé¾ |
| | | var _IsNotChek = "";//æ¯å¦å
æ£ |
| | | var _ShelfLifeDays = "";//ä¿è´¨æå¤©æ° |
| | | var _IsDisabled = "";//æ¯å¦ç¦ç¨ |
| | | var _Id = "";//Idä¸»é® |
| | | #endregion |
| | | |
| | | |
| | | #region åå¼ |
| | | _ControlRuleId = row["æ§å¶å±æ§è§åID"]?.ToString() ; |
| | | _MaxImumqty = row["æé«åºå"]?.ToString() ; |
| | | _MinImumqty = row["æä½åºå"]?.ToString() ; |
| | | _SafeImumqty = row["å®å
¨åºå"]?.ToString() ; |
| | | _MinStorageAge = row["æå°åºé¾"]?.ToString() ; |
| | | _MaxStorageAge = row["æå¤§åºé¾"]?.ToString() ; |
| | | _IsNotChek = row["æ¯å¦å
æ£"]?.ToString() ; |
| | | _ShelfLifeDays = row["ä¿è´¨æå¤©æ°"]?.ToString() ; |
| | | _IsDisabled = row["æ¯å¦ç¦ç¨"]?.ToString() ; |
| | | _Id = row["Id主é®"]?.ToString() ; |
| | | #endregion |
| | | |
| | | |
| | | #region éªè¯ |
| | | |
| | | if (string.IsNullOrEmpty(_ControlRuleId)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ§å¶å±æ§è§åID]{_ControlRuleId}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_ControlRuleId)) |
| | | { |
| | | if (!long.TryParse(_ControlRuleId, out long outControlRuleId)&&!string.IsNullOrEmpty(_ControlRuleId)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ§å¶å±æ§è§åID]{_ControlRuleId}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outControlRuleId <= 0&&!string.IsNullOrEmpty(_ControlRuleId)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ§å¶å±æ§è§åID]{_ControlRuleId}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.ControlRuleId = outControlRuleId; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_MaxImumqty)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æé«åºå]{_MaxImumqty}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_MaxImumqty)) |
| | | { |
| | | if (!decimal.TryParse(_MaxImumqty, out decimal outMaxImumqty)&&!string.IsNullOrEmpty(_MaxImumqty)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æé«åºå]{_MaxImumqty}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outMaxImumqty <= 0&&!string.IsNullOrEmpty(_MaxImumqty)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æé«åºå]{_MaxImumqty}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.MaxImumqty = outMaxImumqty; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_MinImumqty)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æä½åºå]{_MinImumqty}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_MinImumqty)) |
| | | { |
| | | if (!decimal.TryParse(_MinImumqty, out decimal outMinImumqty)&&!string.IsNullOrEmpty(_MinImumqty)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æä½åºå]{_MinImumqty}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outMinImumqty <= 0&&!string.IsNullOrEmpty(_MinImumqty)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æä½åºå]{_MinImumqty}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.MinImumqty = outMinImumqty; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_SafeImumqty)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[å®å
¨åºå]{_SafeImumqty}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_SafeImumqty)) |
| | | { |
| | | if (!decimal.TryParse(_SafeImumqty, out decimal outSafeImumqty)&&!string.IsNullOrEmpty(_SafeImumqty)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[å®å
¨åºå]{_SafeImumqty}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outSafeImumqty <= 0&&!string.IsNullOrEmpty(_SafeImumqty)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[å®å
¨åºå]{_SafeImumqty}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.SafeImumqty = outSafeImumqty; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_MinStorageAge)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æå°åºé¾]{_MinStorageAge}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_MinStorageAge)) |
| | | { |
| | | if (!decimal.TryParse(_MinStorageAge, out decimal outMinStorageAge)&&!string.IsNullOrEmpty(_MinStorageAge)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æå°åºé¾]{_MinStorageAge}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outMinStorageAge <= 0&&!string.IsNullOrEmpty(_MinStorageAge)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æå°åºé¾]{_MinStorageAge}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.MinStorageAge = outMinStorageAge; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_MaxStorageAge)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æå¤§åºé¾]{_MaxStorageAge}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_MaxStorageAge)) |
| | | { |
| | | if (!decimal.TryParse(_MaxStorageAge, out decimal outMaxStorageAge)&&!string.IsNullOrEmpty(_MaxStorageAge)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æå¤§åºé¾]{_MaxStorageAge}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outMaxStorageAge <= 0&&!string.IsNullOrEmpty(_MaxStorageAge)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æå¤§åºé¾]{_MaxStorageAge}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.MaxStorageAge = outMaxStorageAge; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_IsNotChek)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¯å¦å
æ£]{_IsNotChek}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_IsNotChek)) |
| | | { |
| | | if(!_IsNotChek.Equals("æ¯") && !_IsNotChek.Equals("å¦")) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¯å¦å
æ£]{_IsNotChek}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | else |
| | | { |
| | | bool outIsNotChek = _IsNotChek.Equals("æ¯") ? true : false; |
| | | addItem.IsNotChek = outIsNotChek; |
| | | } |
| | | } |
| | | |
| | | |
| | | if (string.IsNullOrEmpty(_ShelfLifeDays)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[ä¿è´¨æå¤©æ°]{_ShelfLifeDays}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_ShelfLifeDays)) |
| | | { |
| | | if (!decimal.TryParse(_ShelfLifeDays, out decimal outShelfLifeDays)&&!string.IsNullOrEmpty(_ShelfLifeDays)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[ä¿è´¨æå¤©æ°]{_ShelfLifeDays}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outShelfLifeDays <= 0&&!string.IsNullOrEmpty(_ShelfLifeDays)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[ä¿è´¨æå¤©æ°]{_ShelfLifeDays}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.ShelfLifeDays = outShelfLifeDays; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_IsDisabled)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¯å¦ç¦ç¨]{_IsDisabled}ä¸è½ä¸ºç©ºï¼"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_IsDisabled)) |
| | | { |
| | | if(!_IsDisabled.Equals("æ¯") && !_IsDisabled.Equals("å¦")) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[æ¯å¦ç¦ç¨]{_IsDisabled}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | else |
| | | { |
| | | bool outIsDisabled = _IsDisabled.Equals("æ¯") ? true : false; |
| | | addItem.IsDisabled = outIsDisabled; |
| | | } |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | if (!long.TryParse(_Id, out long outId)&&!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[Id主é®]{_Id}å¼ä¸æ£ç¡®ï¼"); |
| | | } |
| | | if (outId <= 0&&!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | throw Oops.Oh($"第{index}è¡[Id主é®]{_Id}å¼ä¸è½å°äºçäº0ï¼"); |
| | | } |
| | | else |
| | | { |
| | | addItem.Id = outId; |
| | | } |
| | | |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | details.Add(addItem); |
| | | } |
| | | //éªé |
| | | await CheckExisitForImport(details); |
| | | |
| | | return details; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®çæ¬ä¸è½½æ§å¶å±æ§è§åæç»çExcel导å
¥æ¨¡æ¿ |
| | | /// </summary> |
| | | /// <param name="version">模æ¿çæ¬</param> |
| | | /// <returns>ä¸è½½çæ¨¡æ¿æä»¶</returns> |
| | | [HttpGet("WmsControlRuleDetail/downloadExcelTemplate")] |
| | | public IActionResult DownloadExcelTemplate([FromQuery] string version) |
| | | { |
| | | string _path = TemplateConst.EXCEL_TEMPLATEFILE_导å
¥æ¨¡çè·¯å¾ + $"\\WmsControlRuleDetail{TemplateConst.EXCEL_TEMPLATEFILE_导å
¥æ¨¡çåç§°åç¼}.xlsx"; |
| | | var fileName = HttpUtility.UrlEncode($"导å
¥æ¨¡æ¿(æ§å¶å±æ§è§åæç»).xlsx", Encoding.GetEncoding("UTF-8")); |
| | | return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName }; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ç§ææ¹æ³ |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®èå主é®éªè¯æ°æ®æ¯å¦å·²åå¨-æ°æ®åº |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <param name="isEdit"></param> |
| | | /// <returns></returns> |
| | | private async Task CheckExisit( WmsControlRuleDetail input,bool isEdit=false) |
| | | { |
| | | |
| | | |
| | | |
| | | bool isExist = false; |
| | | if (!isEdit)//æ°å¢ |
| | | { |
| | | //æ°æ®æ¯å¦åå¨éå¤ |
| | | isExist = await _wmsControlRuleDetailRep.AnyAsync(u => |
| | | u.ControlRuleId.Equals(input.ControlRuleId) |
| | | ,false); |
| | | } |
| | | else//ç¼è¾ |
| | | { |
| | | |
| | | |
| | | |
| | | //å½åç¼è¾æ°æ®ä»¥å¤æ¯å¦åå¨éå¤ |
| | | isExist = await _wmsControlRuleDetailRep.AnyAsync(u => |
| | | u.Id != input.Id |
| | | &&u.ControlRuleId.Equals(input.ControlRuleId) |
| | | ,false); |
| | | } |
| | | |
| | | |
| | | |
| | | if (isExist) throw Oops.Oh(ErrorCode.E0001); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®èå主é®éªè¯æ°æ®æ¯å¦å·²åå¨-导å
¥æ¶éªè¯ |
| | | /// </summary> |
| | | /// <param name="inputs"></param> |
| | | /// <returns></returns> |
| | | private async Task CheckExisitForImport(List<WmsControlRuleDetail> inputs) |
| | | { |
| | | //æ ¹æ®èå主é®éªè¯è¡¨æ ¼ä¸ä¸æ¯å¦å·²åå¨ç¸åæ°æ® |
| | | if (inputs?.Count <= 0) |
| | | { |
| | | throw Oops.Oh($"导å
¥æ°æ®ä¸è½ä¸ºç©º"); |
| | | } |
| | | //æ°æ®æ¯å¦éå¤ |
| | | var existExcelItem = inputs.GroupBy(g => new { |
| | | g.ControlRuleId |
| | | }) |
| | | .Where(g => g.Count() > 1) |
| | | .Select(s => new { |
| | | s.Key.ControlRuleId |
| | | }).FirstOrDefault(); |
| | | if (existExcelItem != null) |
| | | { |
| | | var wmsControlRuleDetail = existExcelItem.Adapt<WmsControlRuleDetail>(); |
| | | var item= existExcelItem.Adapt<WmsControlRuleDetail>(); |
| | | throw Oops.Oh($"导å
¥çè¡¨æ ¼ä¸,æ§å¶å±æ§è§åID[{item.ControlRuleId}]å·²åå¨"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | //æ ¹æ®èå主é®éªè¯æ°æ®åºä¸æ¯å¦å·²åå¨ç¸åæ°æ® |
| | | var existDBItem = await _wmsControlRuleDetailRep.DetachedEntities.FirstOrDefaultAsync(w=> |
| | | inputs.Select(s=>"" |
| | | +s.ControlRuleId |
| | | ) |
| | | .Contains("" |
| | | +w.ControlRuleId |
| | | )); |
| | | if (existDBItem != null) |
| | | { |
| | | var wmsControlRuleDetail = existExcelItem.Adapt<WmsControlRuleDetail>(); |
| | | var item= existExcelItem.Adapt<WmsControlRuleDetail>(); |
| | | throw Oops.Oh($"ç³»ç»ä¸,æ§å¶å±æ§è§åID[{item.ControlRuleId}]å·²åå¨"); |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | } |