| | |
| | | "vite-plugin-require-transform": "^1.0.21", |
| | | "vitest": "^0.29.1", |
| | | "vue-tsc": "^1.2.0" |
| | | } |
| | | }, |
| | | "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" |
| | | } |
| | |
| | | icon: 'el-icon-search', |
| | | class: '', |
| | | type: 'primary', |
| | | onClick: function() { |
| | | this.search(); |
| | | onClick: function () { |
| | | this.search() |
| | | } |
| | | }, |
| | | { |
| | |
| | | icon: 'el-icon-plus', |
| | | value: 'Add', |
| | | class: '', |
| | | plain:true, |
| | | // type: 'success', |
| | | color:"#67C23A", |
| | | plain: true, |
| | | type: 'success', |
| | | // color: '#67C23A', |
| | | // plain:true, |
| | | onClick: function() { |
| | | this.add(); |
| | | onClick: function () { |
| | | this.add() |
| | | } |
| | | }, |
| | | { |
| | | name: 'ç¼è¾', |
| | | icon: 'el-icon-edit', |
| | | value: 'Update', |
| | | plain:true, |
| | | plain: true, |
| | | class: '', |
| | | color:"#79bbff", |
| | | color: '#79bbff', |
| | | type: 'primary', |
| | | onClick: function() { |
| | | this.edit(); |
| | | onClick: function () { |
| | | this.edit() |
| | | } |
| | | }, |
| | | { |
| | | name: 'å é¤', |
| | | icon: 'el-icon-delete', |
| | | class: '', |
| | | plain:true, |
| | | plain: true, |
| | | value: 'Delete', |
| | | type: 'danger', |
| | | color:"#F56C6C", |
| | | onClick: function() { |
| | | this.del(); |
| | | color: '#F56C6C', |
| | | onClick: function () { |
| | | this.del() |
| | | } |
| | | }, |
| | | { |
| | |
| | | value: 'Audit', |
| | | plain: true, |
| | | type: 'primary', |
| | | onClick: function() { |
| | | this.audit(); |
| | | onClick: function () { |
| | | this.audit() |
| | | } |
| | | }, |
| | | { |
| | |
| | | // plain: true, |
| | | // type: 'danger', |
| | | // color:"rgb(254, 240, 240)", |
| | | plain:true, |
| | | plain: true, |
| | | // type: 'success', |
| | | color:"#67C23A", |
| | | onClick: function() { |
| | | this.antiAudit(); |
| | | color: '#67C23A', |
| | | onClick: function () { |
| | | this.antiAudit() |
| | | } |
| | | }, |
| | | { |
| | |
| | | type: 'success', |
| | | plain: true, |
| | | value: 'Import', |
| | | onClick: function() { |
| | | this.import(); |
| | | onClick: function () { |
| | | this.import() |
| | | } |
| | | }, |
| | | { |
| | |
| | | type: 'primary', |
| | | plain: true, |
| | | value: 'Export', |
| | | onClick: function() { |
| | | this.export(); |
| | | onClick: function () { |
| | | this.export() |
| | | } |
| | | }, |
| | | { |
| | |
| | | icon: 'el-icon-printer', |
| | | type: 'primary', |
| | | plain: true, |
| | | color:"#529b2e", |
| | | color: '#529b2e', |
| | | value: 'Print', |
| | | onClick: function() { |
| | | this.printClick(); |
| | | onClick: function () { |
| | | this.printClick() |
| | | } |
| | | } |
| | | ]; |
| | | ] |
| | | |
| | | export default buttons; |
| | | export default buttons |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="layout-container"> |
| | | <div class="view-container"> |
| | | <div class="grid-search"> |
| | | <div class="fiexd-search-box" v-show="true"> |
| | | <vol-form ref="searchForm" style="padding: 0 15px" :label-width="100" :formRules="searchFormOptions" |
| | | :formFields="searchFormFields"> |
| | | </vol-form> |
| | | <div v-if="fiexdSearchForm" class="fs-line"></div> |
| | | </div> |
| | | <div class="view-header"> |
| | | <div class="desc-text"> |
| | | <i class="el-icon-s-grid" /> |
| | | <span>{{ title }}</span> |
| | | </div> |
| | | <div class="notice"> |
| | | <a class="text" title="{{title}}"></a> |
| | | </div> |
| | | |
| | | <div class="btn-group"> |
| | | <template :key="bIndex" v-for="(btn, bIndex) in Mybuttons.slice(0, 6)"> |
| | | <el-button :type="btn.type" size="small" :dark="btn.dark" :plain="btn.plain" |
| | | @click="changeDropdown(btn.name)"> |
| | | <i :class="btn.icon"></i> |
| | | {{ btn.name }} |
| | | </el-button> |
| | | </template> |
| | | <el-dropdown size="small" @click="changeDropdown" |
| | | v-if="Mybuttons.length > 5"> |
| | | <el-button type="primary" plain size="small"> |
| | | æ´å¤<i class="el-icon-arrow-down el-icon--right"></i> |
| | | </el-button> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item @click="changeDropdown(item.name)" :name="item.name" |
| | | v-show="!item.hidden" v-for="(item, dIndex) in Mybuttons.slice(6)" :key="dIndex"> |
| | | <i :class="item.icon"></i> |
| | | {{ item.name }} |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="grid-container"> |
| | | <el-table ref="table" stripe :data="tableData" :height="heigth" style="width: 100%" border |
| | | @selection-change="selectionChange"> |
| | | <el-table-column type="selection" width="55" /> |
| | | <el-table-column prop="order_id" label="主é®" v-if="false"></el-table-column> |
| | | <el-table-column type="expand"> |
| | | <template #default="props"> |
| | | <h4>æç»æ°æ®</h4> |
| | | <div m="4"> |
| | | <el-table stripe :data="props.row.boxingInfoDetails" max-height="400" |
| | | style="width: 100%" border> |
| | | <el-table-column label="åºå·" type="index" fixed="left" width="55"></el-table-column> |
| | | <el-table-column :key="index" v-for="(item, index) in detailColumns" |
| | | :label="item.title" :prop="item.field" :width="item.width" |
| | | show-overflow-tooltip></el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column v-for="(item, index) in columns" :key="index" :label="item.title" |
| | | :prop="item.field" sortable="true" show-overflow-tooltip> |
| | | <template #default="scope" v-if="item.type == 'tag'"> |
| | | <el-tag size="small"> |
| | | {{ getDictionary(scope.row, item) }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <template v-if="true"> |
| | | <div class="block pagination" key="pagination-01" style="display: flex"> |
| | | <div style="flex: 1"></div> |
| | | <el-pagination key="pagination-02" @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" :current-page="currentPage1.page" |
| | | :page-sizes="currentPage1.sizes" :page-size="currentPage1.size" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="currentPage1.total"></el-pagination> |
| | | </div> |
| | | </template> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import VolForm from "../VolForm.vue"; |
| | | import VolBox from "../VolBox.vue"; |
| | | import VolTable from "../VolTable.vue"; |
| | | import buttons from "@/api/buttons"; |
| | | import methodss from './methodsDetail.jsx'; |
| | | export default { |
| | | components: { |
| | | 'vol-form': VolForm, |
| | | 'vol-table': VolTable, |
| | | 'vol-box': VolBox |
| | | }, |
| | | |
| | | name: 'CustomTableComponent', |
| | | data() { |
| | | return { |
| | | tableData: [], |
| | | Mybuttons: [], |
| | | currentPage1: { |
| | | sort: "", |
| | | order: "desc", |
| | | Foots: "", |
| | | total: 0, |
| | | // 2020.08.29å¢å èªå®ä¹å页æ¡å¤§å° |
| | | sizes: [30, 60, 100, 120], |
| | | size: 30, // é»è®¤åé¡µå¤§å° |
| | | Wheres: [], |
| | | page: 1, |
| | | rows: 30, |
| | | }, |
| | | selectRows: [], |
| | | }; |
| | | }, |
| | | props: { |
| | | url: String, |
| | | title: String, |
| | | columns: { |
| | | type: Array, |
| | | default: [] |
| | | }, |
| | | detailColumns: Array, |
| | | searchFormOptions: Object, |
| | | searchFormFields: Array, |
| | | dropdownItems: Array, |
| | | heigth: String, |
| | | table: String, |
| | | }, |
| | | methods: { |
| | | ...methodss.methods, |
| | | ...methodss.data, |
| | | changeDropdown(btnName, v1) { |
| | | let button = this.dropdownItems.filter((x) => { |
| | | return x.name == btnName |
| | | }) |
| | | if (button && button.length > 0) { |
| | | button[0].onClick.apply(this) |
| | | } |
| | | }, |
| | | handleSizeChange(val) { |
| | | this.currentPage1.pageSize = val; |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.currentPage1.currentPage = val; |
| | | }, |
| | | |
| | | getPageData() { |
| | | // è·ååé¡µæ°æ® |
| | | var query = this.getSearchParameters(); |
| | | let param = { |
| | | page: this.currentPage1.page, |
| | | rows: this.currentPage1.rows, |
| | | sort: this.currentPage1.sort, |
| | | order: this.currentPage1.order, |
| | | wheres: "", // æ¥è¯¢æ¡ä»¶ï¼æ ¼å¼ä¸º[{ name: "åæ®µ", value: "xx" }] |
| | | }; |
| | | param = Object.assign(param, query); |
| | | param.wheres = JSON.stringify(param.wheres); |
| | | this.http.post(this.url, param, "æ¥è¯¢ä¸").then((x) => { |
| | | this.tableData = x.rows; |
| | | this.currentPage1.total = x.total; |
| | | }); |
| | | }, |
| | | search() { |
| | | this.getPageData(); |
| | | }, |
| | | |
| | | getSearchParameters() { |
| | | //è·åæ¥è¯¢åæ° |
| | | let query = { wheres: [] }; |
| | | for (const key in this.searchFormFields) { |
| | | let value = this.searchFormFields[key]; |
| | | if (this.emptyValue(value)) continue; |
| | | |
| | | if (typeof value == "number") { |
| | | value = value + ""; |
| | | } |
| | | let displayType = this.getSearchItem(key); |
| | | |
| | | //è级åªä¿çéä¸èç¹çæåä¸ä¸ªå¼ |
| | | if (displayType == "cascader") { |
| | | //æ¥è¯¢ä¸é¢ææçåèç¹ï¼å¦ï¼éä¸çæ¯ç¶èç¹ï¼åºè¯¥æ¥è¯¢ä¸é¢ææçèç¹æ°æ®--å¾
å® |
| | | value = value.length ? value[value.length - 1] + "" : ""; |
| | | } |
| | | //2021.05.02å¢å åºé´æ¥è¯¢ |
| | | if ( |
| | | typeof value == "string" || |
| | | ["date", "datetime", "range"].indexOf(displayType) == -1 |
| | | ) { |
| | | query.wheres.push({ |
| | | name: key, |
| | | value: |
| | | typeof value == "string" ? (value + "").trim() : value.join(","), |
| | | displayType: displayType, |
| | | }); |
| | | continue; |
| | | } |
| | | for (let index = 0; index < value.length; index++) { |
| | | if (!this.emptyValue(value[index])) { |
| | | query.wheres.push({ |
| | | name: key, |
| | | value: (value[index] + "").trim(), |
| | | displayType: (() => { |
| | | if (["date", "datetime", "range"].indexOf(displayType) != -1) { |
| | | return index ? "lessorequal" : "thanorequal"; |
| | | } |
| | | return displayType; |
| | | })(), |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | return query; |
| | | }, |
| | | |
| | | getSearchItem(field) { |
| | | //è·åæ¥è¯¢çåæ° |
| | | let data; |
| | | for (let index = 0; index < this.searchFormOptions.length; index++) { |
| | | if (data) return data.type; |
| | | const item = this.searchFormOptions[index]; |
| | | data = item.find((x) => { |
| | | return x.field == field; |
| | | }); |
| | | } |
| | | |
| | | return (data || {}).type; |
| | | }, |
| | | |
| | | emptyValue(value) { |
| | | if (typeof value == "string" && value.trim() === "") { |
| | | return true; |
| | | } |
| | | if (value instanceof Array && !value.length) { |
| | | return true; |
| | | } |
| | | return value === null || value === undefined || value === ""; |
| | | }, |
| | | |
| | | |
| | | filterPermission(tableName, permission) { |
| | | //2021.03.19夿æ¯å¦ææä¸ªè¡¨çæé®æé |
| | | //:["Search","Add","Delete","Update","Import","Export","Upload","Audit"] |
| | | const _result = (this.$store.state.permission || []).find((x) => { |
| | | return x.url == '/' + tableName |
| | | }) |
| | | return _result |
| | | }, |
| | | getButtons() { |
| | | console.log(buttons); |
| | | buttons.forEach(element => { |
| | | this.dropdownItems.push(element); |
| | | }); |
| | | } |
| | | }, |
| | | created() { |
| | | this.getPageData(); |
| | | let permission = this.filterPermission(this.table); |
| | | console.log(permission); |
| | | this.getButtons(); |
| | | this.Mybuttons = this.dropdownItems.filter(item => permission.permission.includes(item.value)); |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style> |
| | | @import "./ViewGrid.less"; |
| | | |
| | | .pagination { |
| | | text-align: right; |
| | | padding: 2px 28px; |
| | | border: 1px solid #eee; |
| | | border-top: 0px; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | } |
| | | }, |
| | | setFormReadonly(readonly) {//å¿«é设置表å䏿ç»è¡¨æ¯å¦åªè¯» |
| | | setFormReadonly(readonly) { |
| | | //å¿«é设置表å䏿ç»è¡¨æ¯å¦åªè¯» |
| | | this.editFormOptions.forEach((x) => { |
| | | x.forEach((ops) => { |
| | | ops.readonly = !!readonly |
¶Ô±ÈÐÂÎļþ |
| | |
| | | let methods = { |
| | | add() { |
| | | this.$Message.success('ç¹å»äºæ·»å æé®') |
| | | }, |
| | | edit() { |
| | | let rows = this.getSelected() |
| | | if (rows.length == 0) { |
| | | return this.$Message.error('è¯·éæ©è¦ç¼è¾çè¡!') |
| | | } |
| | | this.$Message.success('ç¹å»äºç¼è¾æé®') |
| | | }, |
| | | del() { |
| | | let rows = this.getSelected() |
| | | if (rows.length == 0) { |
| | | return this.$Message.error('è¯·éæ©è¦å é¤çè¡!') |
| | | } |
| | | this.$Message.success('ç¹å»äºå 餿é®') |
| | | }, |
| | | getSelected() { |
| | | return this.selectRows |
| | | }, |
| | | |
| | | selectionChange(selection) { |
| | | // console.log(selection); |
| | | // éæ©è¡äºä»¶,åªæåéæè§¦å |
| | | this.selectRows = selection |
| | | if (this.single) { |
| | | if (selection.length == 1) { |
| | | this.$emit('rowChange', selection[0]) |
| | | } |
| | | if (selection.length > 1) { |
| | | let _row = selection[selection.length - 1] |
| | | this.$refs.table.toggleRowSelection(selection[0]) |
| | | this.selectRows = [_row] |
| | | } |
| | | } |
| | | // å°selectionchangeæ´é²åºå» |
| | | this.$emit('selectionChange', selection) |
| | | } |
| | | } |
| | | export default { |
| | | methods |
| | | } |
| | |
| | | </div> |
| | | <span v-else-if="columnChildren.type == 'date'">{{ |
| | | formatterDate(scopeChildren.row, columnChildren) |
| | | }}</span> |
| | | }}</span> |
| | | <template v-else> |
| | | {{ scopeChildren.row[columnChildren.field] }} |
| | | </template> |
| | |
| | | <!-- å¯ç¨åå»ç¼è¾åè½ï¼å¸¦ç¼è¾åè½çä¸ä¼æ¸²æä¸ææ¡ææ¬èæ¯é¢è² --> |
| | | <!-- @click="rowBeginEdit(scope.$index,cindex)" --> |
| | | <!-- 2021.09.21å¢å ç¼è¾æ¶å¯¹readonly屿§å¤æ --> |
| | | <template v-else-if="column.edit && !column.readonly && ['file', 'img', 'excel'].indexOf(column.edit.type) != -1"> |
| | | <template |
| | | v-else-if="column.edit && !column.readonly && ['file', 'img', 'excel'].indexOf(column.edit.type) != -1"> |
| | | <div style="display:flex;align-items: center;" @click.stop> |
| | | <i v-if="!column.showUpload || column.showUpload(scope.row, column)" |
| | | style="padding: 3px;margin-right: 10px;color:#8f9293;cursor: pointer;" |
| | |
| | | <!-- 2020.07.24å¢å æ¥æonChangeäºä»¶ --> |
| | | <el-date-picker clearable size="default" style="width: 100%" |
| | | v-if="['date', 'datetime'].indexOf(column.edit.type) != -1" v-model="scope.row[column.field]" @change="(val) => { |
| | | column.onChange && |
| | | column.onChange(scope.row, column, val); |
| | | } |
| | | column.onChange && |
| | | column.onChange(scope.row, column, val); |
| | | } |
| | | " :type="column.edit.type" :placeholder="column.placeholder || column.title" |
| | | :disabledDate="(val) => getDateOptions(val, column)" :value-format="getDateFormat(column)" |
| | | :disabled="initColumnDisabled(scope.row, column)"> |
| | | </el-date-picker> |
| | | <el-time-picker clearable size="default" style="width: 100%" v-else-if="column.edit.type == 'time'" |
| | | v-model="scope.row[column.field]" @change="(val) => { |
| | | column.onChange && |
| | | column.onChange(scope.row, column, val); |
| | | } |
| | | column.onChange && |
| | | column.onChange(scope.row, column, val); |
| | | } |
| | | " :placeholder="column.placeholder || column.title" :value-format="column.format || 'HH:mm:ss'" |
| | | :disabled="initColumnDisabled(scope.row, column)"> |
| | | </el-time-picker> |
| | | <el-switch v-else-if="column.edit.type == 'switch'" v-model="scope.row[column.field]" |
| | | active-color="#0f84ff" inactive-color="rgb(194 194 194)" active-text="æ¯" inactive-text="å¦" |
| | | inline-prompt @change="(val) => { |
| | | switchChange(val, scope.row, column); |
| | | } |
| | | switchChange(val, scope.row, column); |
| | | } |
| | | " :active-value="typeof scope.row[column.field] == 'boolean' |
| | | ? true |
| | | : typeof scope.row[column.field] == 'string' |
| | | ? '1' |
| | | : 1 |
| | | " :inactive-value="typeof scope.row[column.field] == 'boolean' |
| | | " :inactive-value="typeof scope.row[column.field] == 'boolean' |
| | | ? false |
| | | : typeof scope.row[column.field] == 'string' |
| | | ? '0' |
| | | : 0 |
| | | " :disabled="initColumnDisabled(scope.row, column)"> |
| | | " :disabled="initColumnDisabled(scope.row, column)"> |
| | | </el-switch> |
| | | <template v-else-if=" |
| | | ['select', 'selectList'].indexOf(column.edit.type) != -1 |
| | |
| | | </el-select-v2> |
| | | |
| | | <el-select size="default" style="width: 100%" v-else v-model="scope.row[column.field]" :filterable="column.filter || column.bind.data.length > 10 |
| | | ? true |
| | | : false |
| | | ? true |
| | | : false |
| | | " :multiple="column.edit.type == 'select' ? false : true" |
| | | :placeholder="column.placeholder || column.title" :allow-create="column.autocomplete" @change=" |
| | | column.onChange && column.onChange(scope.row, column) |
| | |
| | | v-else-if="column.edit.type == 'treeSelect' || column.edit.type == 'cascader'" |
| | | v-model="scope.row[column.field]" :data="column.bind.data" |
| | | :multiple="column.multiple === undefined ? true : column.multiple" :render-after-expand="false" |
| | | :show-checkbox="true" :check-strictly="column.checkStrictly === undefined ? true : column.checkStrictly" |
| | | check-on-click-node node-key="key" @change="column.onChange && column.onChange(scope.row, column)" |
| | | :show-checkbox="true" |
| | | :check-strictly="column.checkStrictly === undefined ? true : column.checkStrictly" check-on-click-node |
| | | node-key="key" @change="column.onChange && column.onChange(scope.row, column)" |
| | | :props="{ label: 'label' }"> |
| | | <template #default="{ data, node }"> |
| | | {{ data.label }}</template> |
| | |
| | | )" :key="fIndex" @click="dowloadFile(file)">{{ file.name }}</a> |
| | | <span v-else-if="column.type == 'date'">{{ |
| | | formatterDate(scope.row, column) |
| | | }}</span> |
| | | }}</span> |
| | | <div v-else-if="column.formatter" @click="formatterClick(scope.row, column, $event)" |
| | | v-html="column.formatter(scope.row, column)"></div> |
| | | <!-- 2021.11.18ä¿®å¤tableæ°æ®æºè®¾ç½®ä¸ºnormalåç¹å»è¡$event缺失çé®é¢ --> |
| | |
| | | {{ scope.row[column.field] }} |
| | | </div> |
| | | <div @click="() => { |
| | | column.click && formatterClick(scope.row, column); |
| | | } |
| | | column.click && formatterClick(scope.row, column); |
| | | } |
| | | " v-else-if="column.bind"> |
| | | <el-tag v-if="useTag" class="cell-tag" :class="[isEmptyTag(scope.row, column)]" |
| | | :type="getColor(scope.row, column)" :effect="column.effect">{{ formatter(scope.row, column, true) |
| | | }}</el-tag> |
| | | <template v-else>{{ |
| | | formatter(scope.row, column, true) |
| | | }}</template> |
| | | }}</template> |
| | | </div> |
| | | |
| | | <span v-else>{{ formatter(scope.row, column, true) }}</span> |
| | |
| | | meta: { |
| | | keepAlive: false |
| | | } |
| | | }, |
| | | { |
| | | path: '/DtBoxing', |
| | | name: 'DtBoxing', |
| | | component: () => import('@/views/widesea_wms/stock/DtBoxing.vue'), |
| | | meta: { |
| | | keepAlive: false |
| | | } |
| | | } |
| | | ] |
| | | export default tables |
| | |
| | | *ä¸å¡è¯·å¨@/extension/widesea_wms/material/Dt_MaterielInfo.jsæ¤å¤ç¼å |
| | | --> |
| | | <template> |
| | | <view-grid ref="grid" |
| | | :columns="columns" |
| | | :detail="detail" |
| | | :editFormFields="editFormFields" |
| | | :editFormOptions="editFormOptions" |
| | | :searchFormFields="searchFormFields" |
| | | :searchFormOptions="searchFormOptions" |
| | | :table="table" |
| | | :extend="extend"> |
| | | <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields" |
| | | :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions" |
| | | :table="table" :extend="extend"> |
| | | </view-grid> |
| | | </template> |
| | | <script> |
| | | import extend from "@/extension/widesea_wms/material/Dt_MaterielInfo.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | export default defineComponent({ |
| | | setup() { |
| | | const table = ref({ |
| | | key: 'materielID', |
| | | footer: "Foots", |
| | | cnName: 'ç©æä¿¡æ¯', |
| | | name: 'material/Dt_MaterielInfo', |
| | | url: "/Dt_MaterielInfo/", |
| | | sortName: "MaterielID" |
| | | }); |
| | | const editFormFields = ref({ |
| | | "materielCode":"", |
| | | "materielName":"", |
| | | "packspes":"", |
| | | |
| | | }); |
| | | const editFormOptions = ref([ |
| | | import extend from "@/extension/widesea_wms/material/Dt_MaterielInfo.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | export default defineComponent({ |
| | | setup() { |
| | | const table = ref({ |
| | | key: 'materielID', |
| | | footer: "Foots", |
| | | cnName: 'ç©æä¿¡æ¯', |
| | | name: 'material/Dt_MaterielInfo', |
| | | url: "/Dt_MaterielInfo/", |
| | | sortName: "MaterielID" |
| | | }); |
| | | const editFormFields = ref({ |
| | | "materielCode": "", |
| | | "materielName": "", |
| | | "packspes": "", |
| | | |
| | | }); |
| | | const editFormOptions = ref([ |
| | | [ |
| | | { "title": "ç©æç¼ç ", "field": "materielCode", type: "text" }, |
| | | { "title": "ç©æåç§°", "field": "materielName", type: "text" }, |
| | | { "title": "å
è£
è§æ ¼", "field": "packspes", type: "text" }, |
| | | ] |
| | | ]); |
| | | const searchFormFields = ref({}); |
| | | const searchFormOptions = ref([ |
| | | ]); |
| | | const searchFormFields = ref({}); |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { "title": "ç©æID", "field": "materielID", type: "text" }, |
| | | { "title": "ç©æç¼ç ", "field": "materielCode", type: "text" }, |
| | | { "title": "ç©æåç§°", "field": "materielName", type: "text" }, |
| | | { "title": "å
è£
è§æ ¼", "field": "packspes", type: "text" }, |
| | | ] |
| | | ]); |
| | | const columns = ref([{field:'materielID',title:'ç©æID',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'}, |
| | | {field:'materielCode',title:'ç©æç¼å·',type:'string',width:110,align:'left',sort:true}, |
| | | {field:'materielName',title:'ç©æåç§°',type:'string',width:120,align:'left'}, |
| | | {field:'packspes',title:'è§æ ¼',type:'string',width:110,align:'left'}, |
| | | {field:'attribute',title:'屿§',type:'string',width:110,align:'left'}, |
| | | {field:'unit',title:'åä½',type:'string',width:110,align:'left'}, |
| | | {field:'wareAreaCode',title:'æå±åºåº',type:'string',width:110,align:'left'}, |
| | | {field:'minpackQty',title:'æå°å
è£
',type:'decimal',width:110,align:'left'}, |
| | | {field:'netweight',title:'åé',type:'decimal',width:110,align:'left'}, |
| | | {field:'grossweight',title:'æ¯é',type:'decimal',width:110,align:'left'}, |
| | | {field:'status',title:'å½åç¶æ',type:'int',width:110,align:'left'}, |
| | | {field:'validity',title:'æææ',type:'int',width:110,align:'left'}, |
| | | {field:'safety',title:'å®å
¨åºå',type:'decimal',width:110,align:'left'}, |
| | | {field:'mfacturer',title:'ç产å',type:'string',width:120,align:'left'}, |
| | | {field:'supplier',title:'ä¾åºå',type:'string',width:120,align:'left'}, |
| | | {field:'remark',title:'夿³¨',type:'string',width:120,align:'left'}, |
| | | {field:'materielDesc',title:'ç©ææè¿°',type:'string',width:110,align:'left',hidden:true}, |
| | | {field:'createID',title:'å建ID',type:'int',sort:true,width:100,hidden:true,align:'left'}, |
| | | {field:'creater',title:'å建人',type:'string',sort:true,width:110,align:'left'}, |
| | | {field:'createDate',title:'å建æ¶é´',type:'datetime',sort:true,width:150,align:'left',sort:true}, |
| | | {field:'modifyID',title:'ä¿®æ¹äººID',type:'int',sort:true,width:100,hidden:true,align:'left'}, |
| | | {field:'modifier',title:'ä¿®æ¹äºº',type:'string',sort:true,width:100,hidden:true,align:'left'}, |
| | | {field:'modifyDate',title:'ä¿®æ¹æ¶é´',type:'datetime',sort:true,width:150,hidden:true,align:'left',sort:true}, |
| | | {field:'spare1',title:'Spare1',type:'string',sort:true,width:110,hidden:true,align:'left'}, |
| | | {field:'spare2',title:'Spare2',type:'string',sort:true,width:110,hidden:true,align:'left'}, |
| | | {field:'spare3',title:'Spare3',type:'string',sort:true,width:110,hidden:true,align:'left'}, |
| | | {field:'spare4',title:'Spare4',type:'string',sort:true,width:110,hidden:true,align:'left'}, |
| | | {field:'spare5',title:'Spare5',type:'string',sort:true,width:110,hidden:true,align:'left'}]); |
| | | const detail = ref({ |
| | | cnName: "#detailCnName", |
| | | table: "#detailTable", |
| | | columns: [], |
| | | sortName: "", |
| | | key: "" |
| | | }); |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | }); |
| | | ]); |
| | | const columns = ref([{ field: 'materielID', title: 'ç©æID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' }, |
| | | { field: 'materielCode', title: 'ç©æç¼å·', type: 'string', width: 110, align: 'left', sort: true }, |
| | | { field: 'materielName', title: 'ç©æåç§°', type: 'string', width: 120, align: 'left' }, |
| | | { field: 'packspes', title: 'è§æ ¼', type: 'string', width: 110, align: 'left' }, |
| | | { field: 'attribute', title: '屿§', type: 'string', width: 110, align: 'left' }, |
| | | { field: 'unit', title: 'åä½', type: 'string', width: 110, align: 'left' }, |
| | | { field: 'wareAreaCode', title: 'æå±åºåº', type: 'string', width: 110, align: 'left' }, |
| | | { field: 'minpackQty', title: 'æå°å
è£
', type: 'decimal', width: 110, align: 'left' }, |
| | | { field: 'netweight', title: 'åé', type: 'decimal', width: 110, align: 'left' }, |
| | | { field: 'grossweight', title: 'æ¯é', type: 'decimal', width: 110, align: 'left' }, |
| | | { field: 'status', title: 'å½åç¶æ', type: 'int', width: 110, align: 'left' }, |
| | | { field: 'validity', title: 'æææ', type: 'int', width: 110, align: 'left' }, |
| | | { field: 'safety', title: 'å®å
¨åºå', type: 'decimal', width: 110, align: 'left' }, |
| | | { field: 'mfacturer', title: 'ç产å', type: 'string', width: 120, align: 'left' }, |
| | | { field: 'supplier', title: 'ä¾åºå', type: 'string', width: 120, align: 'left' }, |
| | | { field: 'remark', title: '夿³¨', type: 'string', width: 120, align: 'left' }, |
| | | { field: 'materielDesc', title: 'ç©ææè¿°', type: 'string', width: 110, align: 'left', hidden: true }, |
| | | { field: 'createID', title: 'å建ID', type: 'int', sort: true, width: 100, hidden: true, align: 'left' }, |
| | | { field: 'creater', title: 'å建人', type: 'string', sort: true, width: 110, align: 'left' }, |
| | | { field: 'createDate', title: 'å建æ¶é´', type: 'datetime', sort: true, width: 150, align: 'left', sort: true }, |
| | | { field: 'modifyID', title: 'ä¿®æ¹äººID', type: 'int', sort: true, width: 100, hidden: true, align: 'left' }, |
| | | { field: 'modifier', title: 'ä¿®æ¹äºº', type: 'string', sort: true, width: 100, hidden: true, align: 'left' }, |
| | | { field: 'modifyDate', title: 'ä¿®æ¹æ¶é´', type: 'datetime', sort: true, width: 150, hidden: true, align: 'left', sort: true }, |
| | | { field: 'spare1', title: 'Spare1', type: 'string', sort: true, width: 110, hidden: true, align: 'left' }, |
| | | { field: 'spare2', title: 'Spare2', type: 'string', sort: true, width: 110, hidden: true, align: 'left' }, |
| | | { field: 'spare3', title: 'Spare3', type: 'string', sort: true, width: 110, hidden: true, align: 'left' }, |
| | | { field: 'spare4', title: 'Spare4', type: 'string', sort: true, width: 110, hidden: true, align: 'left' }, |
| | | { field: 'spare5', title: 'Spare5', type: 'string', sort: true, width: 110, hidden: true, align: 'left' }]); |
| | | const detail = ref({ |
| | | cnName: "#detailCnName", |
| | | table: "#detailTable", |
| | | columns: [], |
| | | sortName: "", |
| | | key: "" |
| | | }); |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <ViewGridDetail :columns="columns" :detailColumns="detailColumns" :title="title" :url="url" :heigth="heigth" |
| | | :paginationHide="paginationHide" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions" |
| | | :dropdownItems="dropdownItems" :table="table"> |
| | | |
| | | </ViewGridDetail> |
| | | </template> |
| | | |
| | | <script> |
| | | import ViewGridDetail from "../../../components/basic/ViewGrid/ViewGridDetail.vue"; |
| | | import VolForm from "../../../components/basic/VolForm.vue"; |
| | | |
| | | export default { |
| | | components: { VolForm, ViewGridDetail }, |
| | | data() { |
| | | return { |
| | | title: "ç»çæ°æ®", |
| | | url: "/api/BoxingInfo/GetPageData", |
| | | dropdownItems: [], |
| | | table: 'DtBoxing', |
| | | columns: [ |
| | | { field: 'id', title: 'åºåID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' }, |
| | | { field: 'palletCode', title: 'æçæ¡ç ', type: 'string', width: 110, align: 'left', sort: true }, |
| | | { field: 'locationCode', title: 'åºä½', type: 'string', width: 110, align: 'left' }, |
| | | { field: 'isFull', title: 'æ¯å¦æ»¡ç', type: 'bool', width: 110, align: 'left' }, |
| | | // { field: 'state', title: 'åºåç¶æ', type: 'int', width: 110, align: 'left', bind: { key: "StockState", data: [] } }, |
| | | { field: 'remark', title: '夿³¨', type: 'string', width: 120, hidden: true, align: 'left' }, |
| | | { field: 'createDate', title: 'å建æ¶é´', type: 'int', sort: true, width: 100, hidden: true, align: 'left' }, |
| | | ], |
| | | detailColumns: [ |
| | | { title: "ç©æç¼å·", field: "materielCode", type: "text" }, |
| | | { title: "ç©æåç§°", field: "materielName", type: "text" }, |
| | | { title: "åºåç¶æ", field: "status", type: "text" }, |
| | | { title: "ç»çæ°é", field: "stockQuantity", type: "text" }, |
| | | { title: "å建æ¶é´", field: "createDate", type: "text" }, |
| | | ], |
| | | searchFormFields: {}, |
| | | |
| | | searchFormOptions: [ |
| | | [ |
| | | { "title": "æçæ¡ç ", "field": "palletCode", type: "text" }, |
| | | { "title": "ç©æç¼å·", "field": "materielCode", type: "text" }, |
| | | { "title": "åºåç¶æ", "field": "status", type: "select", dataKey: "StockState", data: [] }, |
| | | { "title": "ç»çç±»å", "field": "groupType", type: "select", dataKey: "GroupType", data: [] }, |
| | | ] |
| | | ], |
| | | tableData: [], |
| | | heigth: 740, |
| | | currentPage1: { |
| | | sort: "", |
| | | order: "desc", |
| | | Foots: "", |
| | | total: 0, |
| | | // 2020.08.29å¢å èªå®ä¹å页æ¡å¤§å° |
| | | sizes: [30, 60, 100, 120], |
| | | size: 30, // é»è®¤åé¡µå¤§å° |
| | | Wheres: [], |
| | | page: 1, |
| | | rows: 30, |
| | | } |
| | | }; |
| | | }, |
| | | methods: { |
| | | onInit() { |
| | | this.dropdownItems.unshift({ |
| | | name: 'æé®', //æé®åç§° |
| | | icon: 'el-icon-document', //æé®å¾æ vue2çæ¬è§iviewææ¡£iconï¼vue3çæ¬è§element uiææ¡£icon(注æä¸æ¯element pulsææ¡£) |
| | | type: 'primary', //æé®æ ·å¼vue2çæ¬è§iviewææ¡£buttonï¼vue3çæ¬è§element uiææ¡£button |
| | | value: '321', //æé®å¼ |
| | | onClick: function () { |
| | | this.$Message.success('ç¹å»äºæé®'); |
| | | } |
| | | }); |
| | | }, |
| | | }, |
| | | created() { |
| | | this.onInit(); |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style></style> |
| | |
| | | /// <returns></returns> |
| | | public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, int top, string orderByFields) |
| | | { |
| | | return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Take(top).ToList(); |
| | | return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Take(top).IncludesAllFirstLayer().ToList(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <returns></returns> |
| | | public virtual List<TEntity> QueryData(string where, int top, string orderByFields) |
| | | { |
| | | return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).Take(top).ToList(); |
| | | return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).Take(top).IncludesAllFirstLayer().ToList(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | public virtual List<TEntity> QueryData(string where, int pageIndex, int pageSize, string orderByFields) |
| | | { |
| | | return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields) |
| | | .WhereIF(!string.IsNullOrEmpty(where), where).ToPageList(pageIndex, pageSize); |
| | | .WhereIF(!string.IsNullOrEmpty(where), where).IncludesAllFirstLayer().ToPageList(pageIndex, pageSize); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | var list = _db.Queryable<TEntity>() |
| | | .OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields) |
| | | .WhereIF(whereExpression != null, whereExpression) |
| | | .IncludesAllFirstLayer() |
| | | .ToPageList(pageIndex, pageSize, ref totalCount); |
| | | |
| | | return new PageGridData<TEntity> { Rows = list, Total = totalCount }; |
| | |
| | | List<TEntity> list = _db.Queryable<TEntity>() |
| | | .OrderBy(orderByModels) |
| | | .WhereIF(whereExpression != null, whereExpression) |
| | | .IncludesAllFirstLayer() |
| | | .ToPageList(pageIndex, pageSize, ref totalCount); |
| | | |
| | | return new PageGridData<TEntity>(totalCount, list); |
| | |
| | | } |
| | | int totalCount = 0; |
| | | List<TEntity> list = _db.Queryable<TEntity>() |
| | | .WhereIF(!string.IsNullOrEmpty(where), where).OrderBy(orderByModels).ToPageList(pageIndex, pageSize, ref totalCount); |
| | | .WhereIF(!string.IsNullOrEmpty(where), where).OrderBy(orderByModels).IncludesAllFirstLayer().ToPageList(pageIndex, pageSize, ref totalCount); |
| | | |
| | | return new PageGridData<TEntity>(totalCount, list); |
| | | } |
| | |
| | | //} |
| | | //GetPageDataOnExecuted?.Invoke(pageGridData); |
| | | |
| | | pageGridData = BaseDal.QueryPage(wheres, options.Page, options.Rows, orderbyDic); |
| | | pageGridData = BaseDal.QueryPage |
| | | (wheres, options.Page, options.Rows, orderbyDic); |
| | | |
| | | return pageGridData; |
| | | } |
| | |
| | | .InterceptedBy(cacheType.ToArray()); |
| | | |
| | | |
| | | foreach (var assembly in assemblyList) |
| | | { |
| | | foreach (var type in assembly.GetTypes()) |
| | | { |
| | | if (!type.IsInterface && !type.IsAbstract && baseType.IsAssignableFrom(type)) |
| | | { |
| | | Console.WriteLine($"注åç±»å: {type.FullName}"); |
| | | } |
| | | } |
| | | } |
| | | //foreach (var assembly in assemblyList) |
| | | //{ |
| | | // foreach (var type in assembly.GetTypes()) |
| | | // { |
| | | // if (!type.IsInterface && !type.IsAbstract && baseType.IsAssignableFrom(type)) |
| | | // { |
| | | // Console.WriteLine($"注åç±»å: {type.FullName}"); |
| | | // } |
| | | // } |
| | | //} |
| | | |
| | | builder.RegisterType<UnitOfWorkManage>().As<IUnitOfWorkManage>() |
| | | .AsImplementedInterfaces() |
| | |
| | | { |
| | | object GetCurrentMenuActionList(); |
| | | |
| | | object GetCurrentMenuPhoneActionList(); |
| | | |
| | | List<MenuDTO> GetUserMenuList(int roleId); |
| | | |
| | | List<ActionDTO> GetActions(int menuId, List<ActionDTO> menuActions, List<Permissions> permissions, int roleId); |
| | |
| | | return obj; |
| | | } |
| | | |
| | | public object GetCurrentMenuPhoneActionList() |
| | | { |
| | | object obj = GetMenuActionPhoneList(App.User.RoleId); |
| | | if (obj is IEnumerable<object> list) |
| | | { |
| | | if (list.Any()) |
| | | { |
| | | return obj; |
| | | } |
| | | else |
| | | { |
| | | return WebResponseContent.Instance.Error("æªè·åå°èåä¿¡æ¯"); |
| | | } |
| | | } |
| | | return obj; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®è§è²IDè·åèå䏿é |
| | | /// </summary> |
| | |
| | | /// <returns></returns> |
| | | public object GetMenuActionList(int roleId) |
| | | { |
| | | if (App.User.IsRoleIdSuperAdmin(roleId)) |
| | | { |
| | | return BaseDal.GetSuperAdminMenu(); |
| | | } |
| | | return BaseDal.GetMenuByRoleId(roleId); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®è§è²IDè·åèå䏿é |
| | | /// </summary> |
| | | /// <param name="roleId"></param> |
| | | /// <returns></returns> |
| | | public object GetMenuActionPhoneList(int roleId) |
| | | { |
| | | var allMenu = BaseDal.QueryData(x => (x.Enable == 1 || x.Enable == 2) && x.MenuType == 1 && x.ParentId > 0).OrderByDescending(a => a.OrderNo).ThenByDescending(q => q.ParentId).ToList(); |
| | | |
| | | var menu = allMenu.Select(x => new |
| | | { |
| | | text = x.MenuName, |
| | | url = x.Url, |
| | | icon = x.Icon, |
| | | }); |
| | | return menu.ToList(); |
| | | } |
| | | |
| | | public List<MenuDTO> GetUserMenuList(int roleId) |
| | | { |
| | |
| | | if (menu.MenuId == menu.ParentId) |
| | | { |
| | | return webResponse.Error($"ç¶çº§idä¸è½ä¸ºèªå·±"); |
| | | } |
| | | } |
| | | if (BaseDal.QueryFirst(x => x.ParentId == menu.MenuId && menu.ParentId == x.MenuId) != null) |
| | | { |
| | | return webResponse.Error($"ä¸è½éæ©æ¤ç¶çº§idï¼éæ©çç¶çº§idä¸å½åèåå½¢æä¾èµå
³ç³»"); |
| | |
| | | webResponse.Error(ex.Message); |
| | | } |
| | | return webResponse; |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | public async Task<WebResponseContent> AddBoxingInfoAsync(DtBoxingInfo boxingInfo) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | // éªè¯æ¨¡åé颿°æ®æ¯å¦åæ³ï¼å¦æä¸åæ³æåºå¼å¸¸ |
| | | var errors = ValidateModel(boxingInfo); |
| | | if (errors.Count > 0) |
| | | var info = await BaseDal.QueryFirstAsync(x => x.PalletCode == boxingInfo.PalletCode); |
| | | if (!info.IsNullOrEmpty()) |
| | | { |
| | | foreach (var error in errors) |
| | | { |
| | | Console.WriteLine(error.ErrorMessage); |
| | | |
| | | } |
| | | string errorMessage = string.Join(",", errors.Select(e => e.ErrorMessage)); |
| | | content.Error(errorMessage); |
| | | content.Error("该æçå·²åå¨ç»ç"); |
| | | } |
| | | else |
| | | { |
| | | var info = await BaseDal.QueryFirstAsync(x=>x.PalletCode == boxingInfo.PalletCode); |
| | | if (!info.IsNullOrEmpty()) |
| | | // æ·»å ç»çä¿¡æ¯ |
| | | var result = await BaseDal.AddDataNavAsync(boxingInfo); |
| | | if (result) |
| | | { |
| | | content.Error("该æçå·²åå¨ç»ç"); |
| | | } |
| | | else |
| | | { |
| | | // æ·»å ç»çä¿¡æ¯ |
| | | var result = await BaseDal.AddDataNavAsync(boxingInfo); |
| | | if (result) |
| | | { |
| | | content.OK("æ·»å æå", boxingInfo); |
| | | } |
| | | content.OK("æ·»å æå", boxingInfo); |
| | | } |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | public override PageGridData<DtBoxingInfo> GetPageData(PageDataOptions options) |
| | | { |
| | | return base.GetPageData(options); |
| | | } |
| | | |
| | | // éªè¯æ¨¡å |
| | | public static List<ValidationResult> ValidateModel(object model) |
| | | { |
| | |
| | | return Json(Service.GetCurrentMenuActionList()); |
| | | } |
| | | |
| | | [HttpGet, HttpPost, Route("getTreePhoneMenu")] |
| | | public IActionResult GetTreePhoneMenu() |
| | | { |
| | | return Json(Service.GetCurrentMenuPhoneActionList()); |
| | | } |
| | | |
| | | [HttpPost, Route("getMenu")] |
| | | public IActionResult GetMenu() |
| | | { |
| | |
| | | } |
| | | }, |
| | | "AllowedHosts": "*", |
| | | |
| | | "urls": "http://*:5000", |
| | | "MainDB": "DB_WIDESEA", //å½å项ç®ç主åºï¼æå¯¹åºçè¿æ¥å符串çEnabledå¿
须为true |
| | | //è¿æ¥å符串 |
| | | //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=", |
| | |
| | | } |
| | | }, |
| | | "AllowedHosts": "*", |
| | | |
| | | "urls": "http://*:5000", |
| | | "MainDB": "DB_WIDESEA", //å½å项ç®ç主åºï¼æå¯¹åºçè¿æ¥å符串çEnabledå¿
须为true |
| | | //è¿æ¥å符串 |
| | | //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=", |