已修改13个文件
已重命名1个文件
已添加3个文件
| | |
| | | <template> |
| | | <!-- 2021.11.18ç§»é¤voltableæ¹æ³@cell-mouse-leave="rowEndEdit" --> |
| | | <div |
| | | class="vol-table" |
| | | :class="[ |
| | | <div class="vol-table" :class="[ |
| | | textInline ? 'text-inline' : '', |
| | | fxRight ? 'fx-right' : '', |
| | | isChrome ? 'chrome' : '', |
| | | smallCell?'small-table':'' |
| | | ]" |
| | | > |
| | | ]"> |
| | | <div class="mask" v-show="loading"></div> |
| | | <div class="message" v-show="loading">å è½½ä¸.....</div> |
| | | <el-table |
| | | :show-summary="summary" |
| | | :summary-method="getSummaryData" |
| | | :row-key="rowKey" |
| | | :key="randomTableKey" |
| | | :lazy="lazy" |
| | | :defaultExpandAll="defaultExpandAll" |
| | | :expand-row-keys="rowKey ? expandRowKeys : undefined" |
| | | stripe |
| | | :load="loadTreeChildren" |
| | | @select="userSelect" |
| | | @select-all="userSelect" |
| | | @selection-change="selectionChange" |
| | | @row-dblclick="rowDbClick" |
| | | @row-click="rowClick" |
| | | @header-click="headerClick" |
| | | :highlight-current-row="highlightCurrentRow" |
| | | ref="table" |
| | | class="v-table" |
| | | @sort-change="sortChange" |
| | | tooltip-effect="dark" |
| | | :height="realHeight" |
| | | :max-height="realMaxHeight" |
| | | :data="url ? rowData : tableData" |
| | | border |
| | | :row-class-name="initIndex" |
| | | :cell-style="getCellStyle" |
| | | style="width: 100%" |
| | | :scrollbar-always-on="true" |
| | | :span-method="cellSpanMethod" |
| | | @expand-change="expandChange" |
| | | > |
| | | <el-table-column |
| | | v-if="columnIndex" |
| | | type="index" |
| | | :fixed="fixed" |
| | | width="55" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | v-if="ck" |
| | | type="selection" |
| | | :fixed="fixed" |
| | | :selectable="selectable" |
| | | width="55" |
| | | ></el-table-column> |
| | | <el-table :show-summary="summary" :summary-method="getSummaryData" :row-key="rowKey" :key="randomTableKey" |
| | | :lazy="lazy" :defaultExpandAll="defaultExpandAll" :expand-row-keys="rowKey ? expandRowKeys : undefined" stripe |
| | | :load="loadTreeChildren" @select="userSelect" @select-all="userSelect" @selection-change="selectionChange" |
| | | @row-dblclick="rowDbClick" @row-click="rowClick" @header-click="headerClick" |
| | | :highlight-current-row="highlightCurrentRow" ref="table" class="v-table" @sort-change="sortChange" |
| | | tooltip-effect="dark" :height="realHeight" :max-height="realMaxHeight" :data="url ? rowData : tableData" border |
| | | :row-class-name="initIndex" :cell-style="getCellStyle" style="width: 100%" :scrollbar-always-on="true" |
| | | :span-method="cellSpanMethod" @expand-change="expandChange"> |
| | | <el-table-column v-if="columnIndex" type="index" :fixed="fixed" width="55"></el-table-column> |
| | | <el-table-column v-if="ck" type="selection" :fixed="fixed" :selectable="selectable" width="55"></el-table-column> |
| | | |
| | | <!-- 2020.10.10ç§»é¤table第ä¸è¡å¼ºå¶æåº --> |
| | | <el-table-column |
| | | v-for="(column, cindex) in filterColumns" |
| | | :prop="column.field" |
| | | :label="column.title" |
| | | :min-width="column.width" |
| | | :formatter="formatter" |
| | | :fixed="column.fixed" |
| | | :key="column.field + cindex" |
| | | :align="column.align" |
| | | :sortable="column.sort ? 'custom' : false" |
| | | :show-overflow-tooltip="column.showOverflowTooltip" |
| | | > |
| | | <el-table-column v-for="(column, cindex) in filterColumns" :prop="column.field" :label="column.title" |
| | | :min-width="column.width" :formatter="formatter" :fixed="column.fixed" :key="column.field + cindex" |
| | | :align="column.align" :sortable="column.sort ? 'custom' : false" |
| | | :show-overflow-tooltip="column.showOverflowTooltip"> |
| | | <template #header> |
| | | <span |
| | | v-if="(column.require || column.required) && column.edit" |
| | | class="column-required" |
| | | >*</span |
| | | >{{ column.title }} |
| | | <span v-if="(column.require || column.required) && column.edit" class="column-required">*</span>{{ |
| | | column.title }} |
| | | </template> |
| | | |
| | | <template #default="scope"> |
| | | <!-- 2022.01.08å¢å å¤è¡¨å¤´ï¼ç°å¨åªæ¯æå¸¸ç¨åè½æ¸²æï¼ä¸æ¯æç¼è¾åè½(æ¶åå°ç»ä»¶éå) --> |
| | | <el-table-column |
| | | style="border: none" |
| | | v-for="columnChildren in filterChildrenColumn(column.children)" |
| | | :key="columnChildren.field" |
| | | :min-width="columnChildren.width" |
| | | :class-name="columnChildren.class" |
| | | :prop="columnChildren.field" |
| | | :align="columnChildren.align" |
| | | :label="columnChildren.title" |
| | | > |
| | | <el-table-column style="border: none" v-for="columnChildren in filterChildrenColumn(column.children)" |
| | | :key="columnChildren.field" :min-width="columnChildren.width" :class-name="columnChildren.class" |
| | | :prop="columnChildren.field" :align="columnChildren.align" :label="columnChildren.title"> |
| | | <template #default="scopeChildren"> |
| | | <a |
| | | href="javascript:void(0);" |
| | | style="text-decoration: none" |
| | | @click="link(scopeChildren.row, columnChildren, $event)" |
| | | v-if="columnChildren.link" |
| | | v-text="scopeChildren.row[columnChildren.field]" |
| | | ></a> |
| | | <table-render |
| | | v-else-if="columnChildren.render && typeof columnChildren.render == 'function'" |
| | | :row="scopeChildren.row" |
| | | key="rd-01" |
| | | :index="scope.$index" |
| | | :column="columnChildren" |
| | | :render="columnChildren.render" |
| | | ></table-render> |
| | | <div |
| | | v-else-if="columnChildren.formatter" |
| | | @click=" |
| | | <a href="javascript:void(0);" style="text-decoration: none" |
| | | @click="link(scopeChildren.row, columnChildren, $event)" v-if="columnChildren.link" |
| | | v-text="scopeChildren.row[columnChildren.field]"></a> |
| | | <table-render v-else-if="columnChildren.render && typeof columnChildren.render == 'function'" |
| | | :row="scopeChildren.row" key="rd-01" :index="scope.$index" :column="columnChildren" |
| | | :render="columnChildren.render"></table-render> |
| | | <div v-else-if="columnChildren.formatter" @click=" |
| | | columnChildren.click && |
| | | columnChildren.click( |
| | | scopeChildren.row, |
| | | columnChildren, |
| | | scopeChildren.$index |
| | | ) |
| | | " |
| | | v-html=" |
| | | columnChildren.formatter( |
| | | " v-html="columnChildren.formatter( |
| | | scopeChildren.row, |
| | | columnChildren, |
| | | scopeChildren.$index |
| | | ) |
| | | " |
| | | ></div> |
| | | "></div> |
| | | <div v-else-if="columnChildren.bind"> |
| | | {{ formatter(scopeChildren.row, columnChildren, true) }} |
| | | </div> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <!-- 2020.06.18å¢å render渲æèªå®ä¹å
容 --> |
| | | <table-render |
| | | v-if="column.render && typeof column.render == 'function'" |
| | | :row="scope.row" |
| | | key="rd-01" |
| | | :index="scope.$index" |
| | | :column="column" |
| | | :render="column.render" |
| | | ></table-render> |
| | | <table-render v-if="column.render && typeof column.render == 'function'" :row="scope.row" key="rd-01" |
| | | :index="scope.$index" :column="column" :render="column.render"></table-render> |
| | | <!-- å¯ç¨åå»ç¼è¾åè½ï¼å¸¦ç¼è¾åè½çä¸ä¼æ¸²æä¸ææ¡ææ¬èæ¯é¢è² --> |
| | | <!-- @click="rowBeginEdit(scope.$index,cindex)" --> |
| | | <!-- 2021.09.21å¢å ç¼è¾æ¶å¯¹readonly屿§å¤æ --> |
| | |
| | | style="padding: 3px;margin-right: 10px;color:#8f9293;cursor: pointer;" |
| | | @click="showUpload(scope.row, column)" class="el-icon-upload"></i> |
| | | <template v-if="column.edit.type == 'img'"> |
| | | <img |
| | | v-for="(file, imgIndex) in getFilePath( |
| | | <img v-for="(file, imgIndex) in getFilePath( |
| | | scope.row[column.field], |
| | | column |
| | | )" |
| | | :key="imgIndex" |
| | | @error="handleImageError" |
| | | @click="viewImg(scope.row, column, file.path, $event,imgIndex)" |
| | | class="table-img" |
| | | :src="file.path" |
| | | /> |
| | | )" :key="imgIndex" @error="handleImageError" |
| | | @click="viewImg(scope.row, column, file.path, $event, imgIndex)" class="table-img" :src="file.path" /> |
| | | </template> |
| | | <a |
| | | style="margin-right: 8px" |
| | | v-else |
| | | class="t-file" |
| | | v-for="(file, fIndex) in getFilePath( |
| | | <a style="margin-right: 8px" v-else class="t-file" v-for="(file, fIndex) in getFilePath( |
| | | scope.row[column.field], |
| | | column |
| | | )" |
| | | :key="fIndex" |
| | | @click="dowloadFile(file)" |
| | | >{{ file.name }}</a |
| | | > |
| | | )" :key="fIndex" @click="dowloadFile(file)">{{ file.name }}</a> |
| | | </div> |
| | | </template> |
| | | <div |
| | | v-else-if=" |
| | | <div v-else-if=" |
| | | column.edit && |
| | | !column.readonly && |
| | | (column.edit.keep || edit.rowIndex == scope.$index) |
| | | " |
| | | class="edit-el" |
| | | > |
| | | " class="edit-el"> |
| | | <div @click.stop class="e-item"> |
| | | <div> |
| | | <!-- 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) => { |
| | | <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); |
| | | } |
| | | " |
| | | :type="column.edit.type" |
| | | :placeholder="column.placeholder || column.title" |
| | | :disabledDate="(val) => getDateOptions(val, column)" |
| | | :value-format="getDateFormat(column)" |
| | | :disabled="initColumnDisabled(scope.row, column)" |
| | | > |
| | | " :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) => { |
| | | <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); |
| | | } |
| | | " |
| | | :placeholder="column.placeholder || column.title" |
| | | :value-format="column.format || 'HH:mm:ss'" |
| | | :disabled="initColumnDisabled(scope.row, column)" |
| | | > |
| | | " :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) => { |
| | | <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); |
| | | } |
| | | " |
| | | :active-value=" |
| | | typeof scope.row[column.field] == 'boolean' |
| | | " :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=" |
| | | <template v-else-if=" |
| | | ['select', 'selectList'].indexOf(column.edit.type) != -1 |
| | | " |
| | | > |
| | | <el-select-v2 |
| | | style="width: 100%" |
| | | :size="size" |
| | | v-if="column.bind.data.length >= select2Count" |
| | | v-model="scope.row[column.field]" |
| | | filterable |
| | | :multiple="column.edit.type == 'select' ? false : true" |
| | | :placeholder="column.placeholder || column.title" |
| | | :autocomplete="column.autocomplete" |
| | | :options="column.bind.data" |
| | | @change=" |
| | | "> |
| | | <el-select-v2 style="width: 100%" :size="size" v-if="column.bind.data.length >= select2Count" |
| | | v-model="scope.row[column.field]" filterable :multiple="column.edit.type == 'select' ? false : true" |
| | | :placeholder="column.placeholder || column.title" :autocomplete="column.autocomplete" |
| | | :options="column.bind.data" @change=" |
| | | column.onChange && column.onChange(scope.row, column) |
| | | " |
| | | clearable |
| | | :disabled="initColumnDisabled(scope.row, column)" |
| | | > |
| | | " clearable :disabled="initColumnDisabled(scope.row, column)"> |
| | | <template #default="{ item }"> |
| | | {{ item.label }} |
| | | </template> |
| | | </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 |
| | | <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 |
| | | " |
| | | :multiple="column.edit.type == 'select' ? false : true" |
| | | :placeholder="column.placeholder || column.title" |
| | | :allow-create="column.autocomplete" |
| | | @change=" |
| | | " :multiple="column.edit.type == 'select' ? false : true" |
| | | :placeholder="column.placeholder || column.title" :allow-create="column.autocomplete" @change=" |
| | | column.onChange && column.onChange(scope.row, column) |
| | | " |
| | | clearable |
| | | :disabled="initColumnDisabled(scope.row, column)" |
| | | > |
| | | <el-option |
| | | v-for="item in column.bind.data" |
| | | :key="item.key" |
| | | v-show="!item.hidden" |
| | | :disabled="item.disabled" |
| | | :label="item.value" |
| | | :value="item.key" |
| | | >{{ item.value }} |
| | | " clearable :disabled="initColumnDisabled(scope.row, column)"> |
| | | <el-option v-for="item in column.bind.data" :key="item.key" v-show="!item.hidden" |
| | | :disabled="item.disabled" :label="item.value" :value="item.key">{{ item.value }} |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | <el-tree-select |
| | | style="width: 100%" |
| | | <el-tree-select style="width: 100%" |
| | | 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)" |
| | | 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)" |
| | | :props="{ label: 'label' }"> |
| | | <template #default="{ data, node }"> |
| | | {{data.label}}</template> |
| | |
| | | @change="column.onChange && column.onChange(scope.row, column)" |
| | | > |
| | | </el-cascader> --> |
| | | <el-input |
| | | v-else-if="column.edit.type == 'textarea'" |
| | | type="textarea" |
| | | :placeholder="column.placeholder || column.title" |
| | | v-model="scope.row[column.field]" |
| | | :disabled="initColumnDisabled(scope.row, column)" |
| | | > |
| | | <el-input v-else-if="column.edit.type == 'textarea'" type="textarea" |
| | | :placeholder="column.placeholder || column.title" v-model="scope.row[column.field]" |
| | | :disabled="initColumnDisabled(scope.row, column)"> |
| | | </el-input> |
| | | <input |
| | | class="table-input" |
| | | v-else-if="!column.summary && !column.onKeyPress" |
| | | v-model.lazy="scope.row[column.field]" |
| | | :placeholder="column.placeholder || column.title" |
| | | :disabled="initColumnDisabled(scope.row, column)" |
| | | /> |
| | | <el-input |
| | | v-else |
| | | @change="inputKeyPress(scope.row, column, $event)" |
| | | <input class="table-input" v-else-if="!column.summary && !column.onKeyPress" |
| | | v-model.lazy="scope.row[column.field]" :placeholder="column.placeholder || column.title" |
| | | :disabled="initColumnDisabled(scope.row, column)" /> |
| | | <el-input v-else @change="inputKeyPress(scope.row, column, $event)" |
| | | @input="inputKeyPress(scope.row, column, $event)" |
| | | @keyup.enter="inputKeyPress(scope.row, column, $event)" |
| | | size="default" |
| | | v-model="scope.row[column.field]" |
| | | :placeholder="column.placeholder || column.title" |
| | | :disabled="initColumnDisabled(scope.row, column)" |
| | | ></el-input> |
| | | @keyup.enter="inputKeyPress(scope.row, column, $event)" size="default" |
| | | v-model="scope.row[column.field]" :placeholder="column.placeholder || column.title" |
| | | :disabled="initColumnDisabled(scope.row, column)"></el-input> |
| | | </div> |
| | | <div |
| | | class="extra" |
| | | v-if="column.extra && edit.rowIndex == scope.$index" |
| | | > |
| | | <a |
| | | :style="column.extra.style" |
| | | style="text-decoration: none" |
| | | @click="extraClick(scope.row, column)" |
| | | > |
| | | <div class="extra" v-if="column.extra && edit.rowIndex == scope.$index"> |
| | | <a :style="column.extra.style" style="text-decoration: none" @click="extraClick(scope.row, column)"> |
| | | <i v-if="column.extra.icon" :class="[column.extra.icon]" /> |
| | | {{ column.extra.text }} |
| | | </a> |
| | |
| | | </div> |
| | | <!--没æç¼è¾åè½çç´æ¥æ¸²ææ ç¾--> |
| | | <template v-else> |
| | | <a |
| | | href="javascript:void(0)" |
| | | style="text-decoration: none;line-height: 1.3;" |
| | | @click="link(scope.row, column, $event)" |
| | | v-if="column.link" |
| | | v-text="scope.row[column.field]" |
| | | ></a> |
| | | <img |
| | | v-else-if="column.type == 'img'" |
| | | v-for="(file, imgIndex) in getFilePath( |
| | | <a href="javascript:void(0)" style="text-decoration: none;line-height: 1.3;" |
| | | @click="link(scope.row, column, $event)" v-if="column.link" v-text="scope.row[column.field]"></a> |
| | | <img v-else-if="column.type == 'img'" v-for="(file, imgIndex) in getFilePath( |
| | | scope.row[column.field], |
| | | column |
| | | )" |
| | | :key="imgIndex" |
| | | @error="handleImageError" |
| | | @click="viewImg(scope.row, column, file.path, $event, imgIndex)" |
| | | class="table-img" |
| | | :src="file.path" |
| | | /> |
| | | <a |
| | | style="margin-right: 8px" |
| | | v-else-if="column.type == 'file' || column.type == 'excel'" |
| | | class="t-file" |
| | | )" :key="imgIndex" @error="handleImageError" |
| | | @click="viewImg(scope.row, column, file.path, $event, imgIndex)" class="table-img" :src="file.path" /> |
| | | <a style="margin-right: 8px" v-else-if="column.type == 'file' || column.type == 'excel'" class="t-file" |
| | | v-for="(file, fIndex) in getFilePath( |
| | | scope.row[column.field], |
| | | column |
| | | )" |
| | | :key="fIndex" |
| | | @click="dowloadFile(file)" |
| | | >{{ file.name }}</a |
| | | > |
| | | )" :key="fIndex" @click="dowloadFile(file)">{{ file.name }}</a> |
| | | <span v-else-if="column.type == 'date'">{{ |
| | | formatterDate(scope.row, column) |
| | | }}</span> |
| | | <div |
| | | v-else-if="column.formatter" |
| | | @click="formatterClick(scope.row, column, $event)" |
| | | v-html="column.formatter(scope.row, column)" |
| | | ></div> |
| | | <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缺失çé®é¢ --> |
| | | <div |
| | | v-else-if="column.bind && (column.normal || column.edit)" |
| | | <div v-else-if="column.bind && (column.normal || column.edit)" |
| | | @click="formatterClick(scope.row, column, $event)" |
| | | :style="column.getStyle && column.getStyle(scope.row, column)" |
| | | > |
| | | :style="column.getStyle && column.getStyle(scope.row, column)"> |
| | | {{ formatter(scope.row, column, true) }} |
| | | </div> |
| | | <div |
| | | v-else-if="column.click && !column.bind" |
| | | @click="formatterClick(scope.row, column)" |
| | | > |
| | | <div v-else-if="column.click && !column.bind" @click="formatterClick(scope.row, column)"> |
| | | {{ scope.row[column.field] }} |
| | | </div> |
| | | <div |
| | | @click=" |
| | | () => { |
| | | <div @click="() => { |
| | | 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 |
| | | > |
| | | " 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 v-if="!paginationHide"> |
| | | <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="paginations.page" |
| | | :page-sizes="paginations.sizes" |
| | | :page-size="paginations.size" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="paginations.total" |
| | | ></el-pagination> |
| | | <el-pagination key="pagination-02" @size-change="handleSizeChange" @current-change="handleCurrentChange" |
| | | :current-page="paginations.page" :page-sizes="paginations.sizes" :page-size="paginations.size" |
| | | layout="total, sizes, prev, pager, next, jumper" :total="paginations.total"></el-pagination> |
| | | </div> |
| | | </template> |
| | | </div> |
| | | |
| | | <VolBox |
| | | v-model="uploadModel" |
| | | title="ä¸ä¼ " |
| | | :height="228" |
| | | :width="500" |
| | | :padding="15" |
| | | lazy |
| | | > |
| | | <VolBox v-model="uploadModel" title="ä¸ä¼ " :height="228" :width="500" :padding="15" lazy> |
| | | <!-- ä¸ä¼ å¾çãexcelæå
¶ä»æä»¶ãæä»¶æ°éã大å°éå¶é½å¯ä»¥ï¼åç
§voluploadç»ä»¶api --> |
| | | <div style="height: 200px;display: flex;align-items: center;"> |
| | | <VolUpload |
| | | style="text-align: center; " |
| | | :autoUpload="currentColumn.edit.autoUpload" |
| | | |
| | | :multiple="currentColumn.edit.multiple" |
| | | :url="uploadUrl" |
| | | :max-file="currentColumn.edit.maxFile" |
| | | :img="currentColumn.edit.type == 'img'" |
| | | :excel="currentColumn.edit.type == 'excel'" |
| | | :fileTypes="currentColumn.edit.fileTypes ? currentColumn.edit.fileTypes : []" |
| | | :fileInfo="fileInfo" |
| | | :upload-after="uploadAfter" |
| | | :upload-before="uploadBefore" |
| | | :append="currentColumn.edit.accept" |
| | | > |
| | | <VolUpload style="text-align: center; " :autoUpload="currentColumn.edit.autoUpload" |
| | | :multiple="currentColumn.edit.multiple" :url="uploadUrl" :max-file="currentColumn.edit.maxFile" |
| | | :img="currentColumn.edit.type == 'img'" :excel="currentColumn.edit.type == 'excel'" |
| | | :fileTypes="currentColumn.edit.fileTypes ? currentColumn.edit.fileTypes : []" :fileInfo="fileInfo" |
| | | :upload-after="uploadAfter" :upload-before="uploadBefore" :append="currentColumn.edit.accept"> |
| | | <div>{{ currentColumn.message}}</div> |
| | | </VolUpload> |
| | | </div> |
| | |
| | | <style lang="less" scoped> |
| | | .vol-table { |
| | | position: relative; |
| | | |
| | | .mask { |
| | | opacity: 0.2; |
| | | position: absolute; |
| | |
| | | background: #d0d0d0; |
| | | z-index: 100; |
| | | } |
| | | |
| | | .message { |
| | | text-align: center; |
| | | color: #635c5c; |
| | |
| | | border: 1px solid #a09e9e; |
| | | } |
| | | } |
| | | |
| | | .e-item { |
| | | display: flex; |
| | | |
| | | > div:first-child { |
| | | flex: 1; |
| | | } |
| | | } |
| | | |
| | | .vol-table ::v-deep(.el-pager .number) { |
| | | padding: 0 7px; |
| | | border-radius: 5px; |
| | |
| | | min-width: 28px; |
| | | height: 27px; |
| | | } |
| | | |
| | | .vol-table ::v-deep(.el-pager .number.active) { |
| | | background: #ed4014; |
| | | color: #fff; |
| | | } |
| | | |
| | | .vol-table ::v-deep(.el-pagination .el-input__wrapper) { |
| | | height: 27px; |
| | | } |
| | |
| | | border-bottom: 1px solid; |
| | | padding-bottom: 2px; |
| | | } |
| | | |
| | | .vol-table .empty-tag { |
| | | border: none; |
| | | background: none; |
| | | } |
| | | |
| | | .v-table ::v-deep(.el-date-editor .el-icon-date), |
| | | .v-table ::v-deep(.el-date-editor .el-icon-time) { |
| | | width: 10px; |
| | |
| | | border: 1px solid #eee; |
| | | border-top: 0px; |
| | | } |
| | | |
| | | /* .v-table ::v-deep(.el-input .el-input__inner) { |
| | | padding: 0 7px; |
| | | } */ |
| | |
| | | .v-table ::v-deep(.el-table__header th.is-sortable) { |
| | | padding: 3px !important; |
| | | } |
| | | |
| | | .vol-table.text-inline ::v-deep(.el-table__body .cell), |
| | | .vol-table.text-inline ::v-deep(.el-table__header-wrapper .cell) { |
| | | word-break: inherit !important; |
| | | white-space: nowrap !important; |
| | | } |
| | | |
| | | /* .v-table ::v-deep(.el-table__body td) { |
| | | padding: 9px 0 !important; |
| | | } */ |
| | |
| | | .vol-table ::v-deep(.el-table-column--selection .cell) { |
| | | display: inline; |
| | | } |
| | | |
| | | .vol-table.text-inline ::v-deep(.el-table th > .cell) { |
| | | white-space: nowrap !important; |
| | | } |
| | |
| | | width: 40px; |
| | | object-fit: cover; |
| | | } |
| | | |
| | | .vol-table .table-img:hover { |
| | | cursor: pointer; |
| | | } |
| | |
| | | .vol-table ::v-deep(.cell) { |
| | | padding: 2px 10px; |
| | | } |
| | | |
| | | .vol-table ::v-deep(.cell .el-tag) { |
| | | padding: 5px 9px; |
| | | } |
| | | |
| | | .table-input { |
| | | color: rgb(104, 103, 103); |
| | | padding: 3px 10px; |
| | |
| | | border-radius: 4px; |
| | | border: 1px solid #dcdcdc; |
| | | } |
| | | |
| | | .table-input:focus { |
| | | outline: 1px solid #49a3fd; |
| | | } |
| | |
| | | .small-table ::v-deep(.el-pagination .el-input__wrapper) { |
| | | height: 27px; |
| | | } |
| | | |
| | | .small-table ::v-deep(.el-table__cell) { |
| | | padding: 6px 0; |
| | | font-size: 13px; |
| | | |
| | | } |
| | | |
| | | .small-table ::v-deep(.cell-tag) { |
| | | padding: 0 5px !important; |
| | | height: 19px; |
ÎļþÃû´Ó Code Management/WMS/WIDESEA_WMSClient/src/extension/widesea_wms/basicinfo/Dt_LocationInfo.js ÐÞ¸Ä |
| | |
| | | **åå°æä½è§ï¼http://v2.volcore.xyz/document/netCoreDev |
| | | *****************************************************************************************/ |
| | | //æ¤jsæä»¶æ¯ç¨æ¥èªå®ä¹æ©å±ä¸å¡ä»£ç ï¼å¯ä»¥æ©å±ä¸äºèªå®ä¹é¡µé¢æè
éæ°é
ç½®çæç代ç |
| | | |
| | | import { defineAsyncComponent } from "vue"; |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridHeader: defineAsyncComponent(() => |
| | | import("./demo_Product/LocationChange.vue")), |
| | | gridBody: '', |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | |
| | | } |
| | | //示ä¾ï¼è®¾ç½®ä¿®æ¹æ°å»ºãç¼è¾å¼¹åºæ¡å段æ ç¾çé¿åº¦ |
| | | this.boxOptions.labelWidth = 150; |
| | | |
| | | //è¡¨æ ¼ä¸æ·»å èªå®ä¹æé® |
| | | this.columns.push({ |
| | | title: "æä½", |
| | | field: "æä½", |
| | | width: 150, |
| | | align: "left", // 'center', |
| | | render: (h, { row, column, index }) => { |
| | | return ( |
| | | <div> |
| | | <el-button |
| | | onClick={($e) => { |
| | | // this.$refs.table.load(); |
| | | // console.log(this.$refs.table); |
| | | this.$refs.gridHeader.customOpen(row); |
| | | }} |
| | | type="primary" |
| | | plain |
| | | style="height:26px; padding: 10px !important;" |
| | | > |
| | | ç¶æåå¨è®°å½ |
| | | </el-button> |
| | | </div> |
| | | ); |
| | | }, |
| | | }); |
| | | }, |
| | | onInited() { |
| | | //æ¡æ¶åå§åé
ç½®å |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <vol-box :lazy="true" v-model="model" title="è´§ä½ç¶æåå¨è®°å½" :width="1820" :padding="5"> |
| | | <div class="table-item"> |
| | | <div class="table-item-header"> |
| | | <div class="table-item-border"></div> <span class="table-item-text">è´§ä½ç¶æåå¨è®°å½</span> |
| | | <div class="table-item-buttons"> |
| | | <div> |
| | | <el-button type="primary" @click="reload" color="#95d475" plain>å·æ°</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- <el-alert type="success" title="" style="line-height: 12px;"> |
| | | åè½ï¼è¡¨å°¾å计ãæä»¶ä¸ä¼ ãç¼è¾ãapiå è½½æ°æ®ãèªå¨å页ãèªå®ä¹æé®ãè¡ç¹å»äºä»¶ãå è½½loadBeforeèªå®ä¹çããã |
| | | </el-alert> --> |
| | | <vol-table @loadBefore="loadBefore" @loadAfter="loadAfter" ref="table" :url="url" index |
| | | :tableData="tableData" :columns="columns" :height="700" :pagination-hide="false" :load-key="true" |
| | | :column-index="true"></vol-table> |
| | | </div> |
| | | <template #footer> |
| | | <div> |
| | | <el-button type="primary" size="small" @click="model = false">确认</el-button> |
| | | <el-button type="default" size="small" @click="model = false">å
³é</el-button> |
| | | </div> |
| | | </template> |
| | | </vol-box> |
| | | </template> |
| | | <script lang="jsx"> |
| | | //妿æ¯èªå®ä¹vue页é¢ä½¿ç¨çé
ç½®ï¼å¨vue页é¢çscriptåä¸å®è¦å ä¸lang="jsx" |
| | | import VolTable from "@/components/basic/VolTable.vue"; |
| | | import VolBox from "@/components/basic/VolBox.vue"; |
| | | export default { |
| | | components: { |
| | | 'vol-table': VolTable, |
| | | 'vol-box': VolBox |
| | | }, |
| | | data() { |
| | | return { |
| | | model: false, |
| | | locationCode: '', |
| | | //æ¥å£è¿åæ°æ®ï¼å¯ä»¥æ¡æ¶çæçæ¥å£getPageData |
| | | //妿æ¯èªå®ä¹çæ¥å£ï¼éè¦è¿åçæ°æ®æ ¼å¼ï¼{total:100,rows:[]} |
| | | url: "api/LocationStatusChangeRecord/getPageData", |
| | | columns: [{ field: 'Id', title: '主é®', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' }, |
| | | { field: 'locationId', title: 'è´§ä½ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' }, |
| | | { field: 'locationCode', title: 'è´§ä½ç¼å·', type: 'string', width: 110, require: true, align: 'left' }, |
| | | { field: 'beforeStatus', title: 'åå¨åè´§ä½ç¶æ', type: 'int', width: 120, align: 'left', bind: { key: "LocationState", data: [] } }, |
| | | { field: 'afterStatus', title: 'åå¨åè´§ä½ç¶æ', type: 'int', width: 110, require: true, align: 'left', sort: true, bind: { key: "LocationState", data: [] } }, |
| | | { field: 'changeType', title: 'åå¨ç±»åï¼åºåºãå
¥åºãæå¨è°æ´ï¼', type: 'string', width: 70, align: 'left', bind: { key: "StatusChangeType", data: [] } }, |
| | | { field: 'orderId', title: '忮䏻é®', type: 'string', width: 70, align: 'left', hidden: true }, |
| | | { field: 'orderNo', title: 'åæ®ç¼å·', type: 'string', width: 110, align: 'left', hidden: true }, |
| | | { field: 'orderDetailId', title: 'åæ®æç»ä¸»é®', type: 'string', width: 110, align: 'left', hidden: true }, |
| | | { field: 'taskNum', title: 'ä»»å¡å·', type: 'string', width: 110, align: 'left' }, |
| | | { field: 'remark', title: '夿³¨', type: 'int', width: 110, align: 'left', hidden: true }, |
| | | { field: 'creater', title: 'å建人', type: 'string', sort: true, width: 110, align: 'left', hidden: true }, |
| | | { field: 'createDate', title: 'å建æ¶é´', type: 'datetime', sort: true, width: 150, align: 'left', sort: true }, |
| | | { field: 'modifier', title: 'ä¿®æ¹äºº', type: 'string', sort: true, width: 100, align: 'left', hidden: true }, |
| | | { field: 'modifyDate', title: 'ä¿®æ¹æ¶é´', type: 'datetime', sort: true, width: 150, hidden: true, align: 'left', sort: true } |
| | | ] |
| | | } |
| | | }, |
| | | methods: { |
| | | //èªå®ä¹æé® |
| | | customOpen(row) { |
| | | this.locationCode = row.locationCode; |
| | | this.model = true; |
| | | this.$nextTick(() => { |
| | | this.$refs.table.load(null, true); |
| | | }) |
| | | }, |
| | | |
| | | loadBefore(params, callBack) {//è°ç¨åå°æ¥å£åå¤ç |
| | | //设置æ¥è¯¢æ¡ä»¶åæ° |
| | | params.wheres.push({ |
| | | name: "locationCode", |
| | | value: this.locationCode, |
| | | displayType: "like"//æ¨¡ç³æ¥è¯¢ |
| | | }) |
| | | |
| | | //ä¹å¯ä»¥ç»value设置å¼ï¼åå°èªå·±è§£æ |
| | | // params.value=this.OrderNo |
| | | |
| | | //æ¥è¯¢åæ¹æ³ä¹å¯ä»¥å¨æè®¾ç½®urlåæ° |
| | | //params.url='api/xxx/xx?åæ°1='+this.xxåæ° |
| | | |
| | | callBack(true)//falseä¸ä¼è°ç¨åå°æ¥å£ |
| | | }, |
| | | //æ¥è¯¢åæ¹æ³ |
| | | loadAfter(rows, callBack, result) { |
| | | //妿æå计ï¼åå°è¿ååè®¡æ ¼å¼ |
| | | // var data = new { |
| | | // rows: [],//è¿åçè¡æ°æ® |
| | | // total: 200,//è¿åçæ»è¡æ° |
| | | // //å计 |
| | | // summary: { TotalPrice: 100, TotalQty: 200 } |
| | | // } |
| | | // callBack(true) |
| | | }, |
| | | reload() { |
| | | this.$refs.table.load(null, true); |
| | | this.$message.success('æ¥è¯¢æå') |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="less" scoped> |
| | | .table-item-header { |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 6px; |
| | | |
| | | .table-item-border { |
| | | height: 15px; |
| | | background: rgb(33, 150, 243); |
| | | width: 5px; |
| | | border-radius: 10px; |
| | | position: relative; |
| | | margin-right: 5px; |
| | | } |
| | | |
| | | .table-item-text { |
| | | font-weight: bolder; |
| | | } |
| | | |
| | | .table-item-buttons { |
| | | flex: 1; |
| | | text-align: right; |
| | | } |
| | | |
| | | .small-text { |
| | | font-size: 12px; |
| | | color: #2196F3; |
| | | margin-left: 10px; |
| | | position: relative; |
| | | top: 2px; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | </div> |
| | | <div class="vol-menu"> |
| | | <el-scrollbar style="height: 100%"> |
| | | <VolMenu |
| | | :currentMenuId="currentMenuId" |
| | | :on-select="onSelect" |
| | | :enable="true" |
| | | :open-select="false" |
| | | :isCollapse="isCollapse" |
| | | :list="menuOptions" |
| | | ></VolMenu> |
| | | <VolMenu :currentMenuId="currentMenuId" :on-select="onSelect" :enable="true" :open-select="false" |
| | | :isCollapse="isCollapse" :list="menuOptions"></VolMenu> |
| | | </el-scrollbar> |
| | | </div> |
| | | </div> |
| | | <div class="vol-container" :style="{ left: menuWidth - 1 + 'px' }"> |
| | | <div class="vol-header"> |
| | | <div class="project-name">Volå¼åæ¡æ¶Vue3çæ¬</div> |
| | | <div class="project-name">WIDESEA_WMS</div> |
| | | <div class="header-text"> |
| | | <div class="h-link"> |
| | | <a |
| | | href="javascript:void(0)" |
| | | @click="to(item)" |
| | | v-for="(item, index) in links.filter((c) => { |
| | | <a href="javascript:void(0)" @click="to(item)" v-for="(item, index) in links.filter((c) => { |
| | | return !c.icon; |
| | | })" |
| | | :key="index" |
| | | > |
| | | })" :key="index"> |
| | | <span v-if="!item.icon"> {{ item.text }}</span> |
| | | <i v-else :class="item.icon"></i> |
| | | </a> |
| | |
| | | </div> |
| | | <div class="header-info"> |
| | | <div class="h-link"> |
| | | <a |
| | | href="javascript:void(0)" |
| | | @click="to(item)" |
| | | v-for="(item, index) in links.filter((c) => { |
| | | <a href="javascript:void(0)" @click="to(item)" v-for="(item, index) in links.filter((c) => { |
| | | return c.icon; |
| | | })" |
| | | :key="index" |
| | | > |
| | | })" :key="index"> |
| | | <span v-if="!item.icon"> {{ item.text }}</span> |
| | | <i v-else :class="item.icon"></i> |
| | | </a> |
| | |
| | | <span id="index-date"></span> |
| | | </div> |
| | | <div class="settings"> |
| | | <i |
| | | style="font-size: 20px" |
| | | class="el-icon-s-tools" |
| | | @click="drawer_model = true" |
| | | /> |
| | | <i style="font-size: 20px" class="el-icon-s-tools" @click="drawer_model = true" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="vol-path"> |
| | | <el-tabs |
| | | @tab-click="selectNav" |
| | | @tab-remove="removeNav" |
| | | @contextmenu.prevent="bindRightClickMenu(false)" |
| | | type="border-card" |
| | | class="header-navigation" |
| | | v-model="selectId" |
| | | :strtch="false" |
| | | > |
| | | <el-tab-pane |
| | | v-for="(item, navIndex) in navigation" |
| | | type="card" |
| | | :name="navIndex + ''" |
| | | :closable="navIndex > 0" |
| | | :key="navIndex" |
| | | :label="item.name" |
| | | > |
| | | <el-tabs @tab-click="selectNav" @tab-remove="removeNav" @contextmenu.prevent="bindRightClickMenu(false)" |
| | | type="border-card" class="header-navigation" v-model="selectId" :strtch="false"> |
| | | <el-tab-pane v-for="(item, navIndex) in navigation" type="card" :name="navIndex + ''" :closable="navIndex > 0" |
| | | :key="navIndex" :label="item.name"> |
| | | <span style="display: none">{{ navIndex }}</span> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | <!-- å³é®èå --> |
| | | <div v-show="contextMenuVisible"> |
| | | <ul |
| | | :style="{ left: menuLeft + 'px', top: menuTop + 'px' }" |
| | | class="contextMenu" |
| | | > |
| | | <ul :style="{ left: menuLeft + 'px', top: menuTop + 'px' }" class="contextMenu"> |
| | | <li v-show="visibleItem.all"> |
| | | <el-button link @click="closeTabs()"> |
| | | <i class="el-icon-close"></i> |
| | | {{ |
| | | navigation.length == 2 ? "å
³éèå" : "å
³éææ" |
| | | }}</el-button |
| | | > |
| | | }}</el-button> |
| | | </li> |
| | | <li v-show="visibleItem.left"> |
| | | <el-button link @click="closeTabs('left')" |
| | | ><i class="el-icon-back"></i>å
³é左边</el-button |
| | | > |
| | | <el-button link @click="closeTabs('left')"><i class="el-icon-back"></i>å
³é左边</el-button> |
| | | </li> |
| | | <li v-show="visibleItem.right"> |
| | | <el-button link @click="closeTabs('right')" > |
| | | <i class="el-icon-right"></i>å
³éå³è¾¹</el-button |
| | | > |
| | | <i class="el-icon-right"></i>å
³éå³è¾¹</el-button> |
| | | </li> |
| | | <li v-show="visibleItem.other"> |
| | | <el-button |
| | | link |
| | | @click="closeTabs('other')" |
| | | |
| | | ><i class="el-icon-right"></i>å
³éå
¶ä» |
| | | <el-button link @click="closeTabs('other')"><i class="el-icon-right"></i>å
³éå
¶ä» |
| | | </el-button> |
| | | </li> |
| | | </ul> |
| | |
| | | <loading v-show="$store.getters.isLoading()"></loading> |
| | | <router-view v-slot="{ Component }"> |
| | | <keep-alive> |
| | | <component |
| | | :is="Component" |
| | | :key="$route.name" |
| | | v-if="!$route.meta ||($route.meta && !$route.meta.hasOwnProperty('keepAlive'))" |
| | | /> |
| | | <component :is="Component" :key="$route.name" |
| | | v-if="!$route.meta || ($route.meta && !$route.meta.hasOwnProperty('keepAlive'))" /> |
| | | </keep-alive> |
| | | <component |
| | | :is="Component" |
| | | :key="$route.name" |
| | | v-if="$route.meta && $route.meta.hasOwnProperty('keepAlive')" |
| | | /> |
| | | <component :is="Component" :key="$route.name" |
| | | v-if="$route.meta && $route.meta.hasOwnProperty('keepAlive')" /> |
| | | </router-view> |
| | | </el-scrollbar> |
| | | </div> |
| | | </div> |
| | | <el-drawer |
| | | title="鿩䏻é¢" |
| | | v-model="drawer_model" |
| | | direction="rtl" |
| | | destroy-on-close |
| | | > |
| | | <el-drawer title="鿩䏻é¢" v-model="drawer_model" direction="rtl" destroy-on-close> |
| | | <div class="theme-selector"> |
| | | <div |
| | | @click="changeTheme(item.name)" |
| | | class="item" |
| | | v-for="(item, index) in theme_color" |
| | | :key="index" |
| | | :style="{ background: item.color }" |
| | | > |
| | | <div |
| | | v-show="item.leftColor" |
| | | :style="{ background: item.leftColor }" |
| | | style="height: 100%; width: 20px" |
| | | class="t-left" |
| | | ></div> |
| | | <div @click="changeTheme(item.name)" class="item" v-for="(item, index) in theme_color" :key="index" |
| | | :style="{ background: item.color }"> |
| | | <div v-show="item.leftColor" :style="{ background: item.leftColor }" style="height: 100%; width: 20px" |
| | | class="t-left"></div> |
| | | <div class="t-right"></div> |
| | | </div> |
| | | </div> |
| | | </el-drawer> |
| | | |
| | | <el-drawer |
| | | title="æ¶æ¯å表" |
| | | v-model="messageModel" |
| | | direction="rtl" |
| | | destroy-on-close |
| | | > |
| | | <el-drawer title="æ¶æ¯å表" v-model="messageModel" direction="rtl" destroy-on-close> |
| | | <Message :list="messageList"></Message> |
| | | </el-drawer> |
| | | </div> |
| | |
| | | { name: "white", color: "#fff" }, |
| | | ]); |
| | | const links = ref([ |
| | | { |
| | | text: "æ¡æ¶è§é¢", |
| | | path: "https://www.cctalk.com/m/group/90268531", |
| | | id: -3, |
| | | }, |
| | | { text: "大屿°æ®", path: "/bigdata", id: -3 }, |
| | | { |
| | | text: "æ¡æ¶ææ¡£", |
| | | path: "http://v2.volcore.xyz/document/guide", |
| | | id: -2, |
| | | }, { |
| | | text: "æ¡æ¶ä¼ä¸ç", |
| | | path: "http://pro.volcore.xyz/", |
| | | id: 10, |
| | | }, |
| | | //{ |
| | | // text: "æ¡æ¶è§é¢", |
| | | // path: "https://www.cctalk.com/m/group/90268531", |
| | | // id: -3, |
| | | //}, |
| | | //{ text: "大屿°æ®", path: "/bigdata", id: -3 }, |
| | | //{ |
| | | // text: "æ¡æ¶ææ¡£", |
| | | // path: "http://v2.volcore.xyz/document/guide", |
| | | // id: -2, |
| | | //}, { |
| | | // text: "æ¡æ¶ä¼ä¸ç", |
| | | // path: "http://pro.volcore.xyz/", |
| | | // id: 10, |
| | | //}, |
| | | { text: "个人ä¸å¿", path: "/UserInfo", id: -1, icon: "el-icon-s-custom" }, |
| | | { |
| | | text: "å®å
¨éåº", |
| | |
| | | font-size: 14px; |
| | | color: #333; |
| | | box-shadow: 2px 2px 3px 0 rgb(182 182 182 / 20%); |
| | | i,button{ |
| | | |
| | | i, |
| | | button { |
| | | font-size: 14px !important; |
| | | } |
| | | } |
| | |
| | | letter-spacing: 1px; |
| | | } |
| | | |
| | | .el-tabs.el-tabs--top.el-tabs--border-card.header-navigation |
| | | > .el-tabs__header |
| | | .el-tabs__item:last-child, |
| | | .el-tabs--top.el-tabs--border-card.header-navigation |
| | | > .el-tabs__header |
| | | .el-tabs__item:nth-child(2) { |
| | | .el-tabs.el-tabs--top.el-tabs--border-card.header-navigation>.el-tabs__header .el-tabs__item:last-child, |
| | | .el-tabs--top.el-tabs--border-card.header-navigation>.el-tabs__header .el-tabs__item:nth-child(2) { |
| | | padding: 0; |
| | | } |
| | | |
| | |
| | | <template> |
| | | <div class="login-container"> |
| | | <div class="project-name">VOLå¼åæ¡æ¶,Vue3çæ¬</div> |
| | | <div class="project-name">WIDESEA_WMS</div> |
| | | <div class="login-form"> |
| | | <div class="form-user" @keypress="loginPress"> |
| | | <div class="login-text"> |
| | |
| | | </div> |
| | | |
| | | <!-- è´¦å·ä¿¡æ¯ --> |
| | | <div class="account-info"> |
| | | <!-- <div class="account-info"> |
| | | <p>æ¼ç¤ºè´¦å·ï¼admin666 å¯ç :123456</p> |
| | | <p>æ¬å°è´¦å·ï¼admin å¯ç :123456</p> |
| | | <p><a href="https://jq.qq.com/?_wv=1027&k=Sqstuy0M" style="text-decoration: none" |
| | | target="_blank">QQ3群:743852316(满)</a> |
| | | |
| | | <a href="https://qm.qq.com/cgi-bin/qm/qr?k=YRZBbf64qsUeEmh24I65u2aIZFn2C-Ha&jump_from=webapi&qr=1" style="text-decoration: none" target="_blank">QQ4群ï¼959924606</a> |
| | | <a href="https://qm.qq.com/cgi-bin/qm/qr?k=YRZBbf64qsUeEmh24I65u2aIZFn2C-Ha&jump_from=webapi&qr=1" style="text-decoration: none" target="_blank">QQ4群ï¼959924606</a> --> |
| | | <!-- <a href="http://v2.volcore.xyz/document/guide" style="text-decoration: none" target="_blank">æ¡æ¶ææ¡£</a> --> |
| | | </p> |
| | | </div> |
| | | <!-- </p> |
| | | </div> --> |
| | | <!-- 龿¥ä½ç½® --> |
| | | <div class="app-link" > |
| | | <!-- <div class="app-link" > |
| | | <a href="#" style="text-decoration: none">ç§»å¨ç«¯æ«ç </a> |
| | | <a> |
| | | <i class="el-icon-chat-dot-round"></i> å°ç¨åº |
| | |
| | | <i class="el-icon-document"></i> |
| | | H5 |
| | | <img src="https://app-1256993465.cos.ap-nanjing.myqcloud.com/H5.png" /></a> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | |
| | | <!-- 页é¢åºé¨ --> |
| | | <div class="login-footer"> |
| | | <!-- <div class="login-footer"> |
| | | <a style="text-decoration: none" href="https://beian.miit.gov.cn/" target="_blank">京ICPå¤19056538å·-1</a> |
| | | |
| | | |
| | |
| | | <a href="https://space.bilibili.com/525836469" style="text-decoration: none" target="blank">NETè§é¢æç¨(微软MVP-ACEå½å¶)</a> |
| | | <a href="https://www.cctalk.com/m/group/90268531" style="text-decoration: none" target="blank">VOLæ¡æ¶è§é¢</a> |
| | | <a href="http://demo.volcore.xyz" style="text-decoration: none" target="blank">è§é¢æ¼ç¤ºå°å</a> |
| | | </div> |
| | | </div> --> |
| | | |
| | | <img class="login-bg" src="/static/login_bg.png" /> |
| | | </div> |
| | |
| | | return this.$message.error("两次å¯ç ä¸ä¸è´"); |
| | | } |
| | | let url = |
| | | "/api/user/modifyPwd?oldPwd=" + |
| | | "/api/Sys_User/modifyPwd?oldPwd=" + |
| | | this.modifyOptions.fields.oldPwd + |
| | | "&newPwd=" + |
| | | this.modifyOptions.fields.newPwd; |
| | |
| | | }, |
| | | modifyInfo() { |
| | | this.$refs.form.validate(() => { |
| | | this.http.post('api/user/updateUserInfo', this.userInfo).then(result => { |
| | | this.http.post('api/Sys_User/updateUserInfo', this.userInfo).then(result => { |
| | | this.$message.success(result); |
| | | let userInfo = this.$store.getters.getUserInfo(); |
| | | userInfo.img = this.userInfo.headImageUrl; |
| | |
| | | var forms = new FormData(); |
| | | let file = e.target.files[0] |
| | | forms.append('fileInput', file, file.name); |
| | | const url = 'api/sys_user/upload' |
| | | const url = 'api/Sys_User/upload' |
| | | this.http |
| | | .post(url, forms, true, { |
| | | headers:{'Content-Type':'multipart/form-data'} |
| | |
| | | } |
| | | }, |
| | | created() { |
| | | this.http.post("/api/user/getCurrentUserInfo", {}, true).then((x) => { |
| | | this.http.post("/api/Sys_User/getCurrentUserInfo", {}, true).then((x) => { |
| | | if (!x.status) { |
| | | return this.$message(x.message); |
| | | } |
| | |
| | | </view-grid> |
| | | </template> |
| | | <script> |
| | | import extend from "@/extension/widesea_wms/basicinfo/Dt_LocationInfo.js"; |
| | | import extend from "@/extension/widesea_wms/basicinfo/Dt_LocationInfo.jsx"; |
| | | import { ref, defineComponent } from "vue"; |
| | | export default defineComponent({ |
| | | setup() { |
| | | const table = ref({ |
| | | key: 'locationID', |
| | | key: 'id', |
| | | footer: "Foots", |
| | | cnName: 'è´§ä½ä¿¡æ¯', |
| | | name: 'basicinfo/Dt_LocationInfo', |
| | | url: "/LocationInfo/", |
| | | sortName: "LocationID" |
| | | sortName: "id" |
| | | }); |
| | | const editFormFields = ref({ "status": "", "scNo": "", "roadWayNO": "", "locationCode": "", "wareAreaCode": "" }); |
| | | const editFormFields = ref({ "locationStatus": "" }); |
| | | const editFormOptions = ref([ |
| | | [ |
| | | { "title": "è´§ä½ç¼å·", "field": "locationCode", type: "text" }, |
| | | { "title": "è´§ä½ç¶æ", "field": "status", "type": "select", dataKey: "LocationState", data: [] }, |
| | | { "title": "对åºå åæºå·", "field": "scNo", type: "text" }, |
| | | { "title": "å··éç¼å·", "field": "roadWayNO", type: "text" }, |
| | | |
| | | ], [ |
| | | { "title": "åºåºç¼å·", "field": "wareAreaCode", type: "text" }, |
| | | { "title": "è´§ä½ç¶æ", "field": "locationStatus", "type": "select", dataKey: "LocationState", data: [] }, |
| | | ] |
| | | ]); |
| | | const searchFormFields = ref({ "LocationID": "" }); |
| | |
| | | const columns = ref([{ field: 'locationID', title: 'è´§ä½ID', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' }, |
| | | { field: 'locationCode', title: 'è´§ä½ç¼å·', type: 'string', width: 110, require: true, align: 'left' }, |
| | | { field: 'locationName', title: 'è´§ä½åç§°', type: 'string', width: 120, align: 'left' }, |
| | | { field: 'roadWayNO', title: 'å··éå·', type: 'string', width: 110, require: true, align: 'left', sort: true }, |
| | | { field: 'roadwayNo', title: 'å··éå·', type: 'string', width: 110, require: true, align: 'left', sort: true }, |
| | | { field: 'row', title: 'è¡', type: 'string', width: 70, align: 'left' }, |
| | | { field: 'column', title: 'å', type: 'string', width: 70, align: 'left' }, |
| | | { field: 'layer', title: 'å±', type: 'string', width: 110, align: 'left' }, |
| | | { field: 'depth', title: '深度', type: 'string', width: 110, align: 'left' }, |
| | | { field: 'scNo', title: '对åºå åæºå·', type: 'string', width: 110, align: 'left' }, |
| | | { field: 'locationType', title: 'è´§ä½ç±»å', type: 'int', width: 110, align: 'left' }, |
| | | { field: 'scNo', title: '对åºå åæºå·', type: 'string', width: 110, align: 'left', hidden: true }, |
| | | { field: 'locationType', title: 'è´§ä½ç±»å', type: 'int', width: 110, align: 'left', bind: { key: "locationType", data: [] } }, |
| | | { field: 'locationStatus', title: 'è´§ä½ç¶æ', type: 'int', width: 110, align: 'left', bind: { key: "LocationState", data: [] } }, |
| | | { field: 'isLocked', title: 'æ¯å¦éå®', type: 'bool', width: 110, align: 'left' , bind: { key: "IsLocked", data: [] } }, |
| | | { field: 'locationDesc', title: 'è´§ä½æè¿°', type: 'string', width: 110, align: 'left' }, |
| | | { field: 'isLocked', title: 'æ¯å¦éå®', type: 'bool', width: 110, align: 'left', hidden: true, bind: { key: "IsLocked", data: [] } }, |
| | | { field: 'locationDesc', title: 'è´§ä½æè¿°', type: 'string', width: 110, align: 'left', hidden: true }, |
| | | { field: 'remark', title: '夿³¨', type: 'string', width: 110, align: 'left' }, |
| | | { field: 'wareAreaCode', title: 'åºåºç¼å·', type: 'string', width: 110, align: 'left', hidden: true }, |
| | | { field: 'roadway', title: 'å··é', type: 'string', width: 110, align: 'left', hidden: true }, |
| | |
| | | { "title": "è´§ä½ç¼å·", "field": "locationCode", type: "text" }, |
| | | { "title": "åå¨åè´§ä½ç¶æ", "field": "BeforeStatus", "type": "select", dataKey: "LocationState", data: [] }, |
| | | { "title": "åå¨åè´§ä½ç¶æ", "field": "AfterStatus", "type": "select", dataKey: "LocationState", data: [] }, |
| | | { "title": "åå¨ç±»å", "field": "changeType", type: "text" }, |
| | | { "title": "åå¨ç±»å", "field": "changeType", type: "select", dataKey: "StatusChangeType", data: [] }, |
| | | ] |
| | | ]); |
| | | const columns = ref([{ field: 'Id', title: '主é®', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' }, |
| | |
| | | { field: 'locationCode', title: 'è´§ä½ç¼å·', type: 'string', width: 110, require: true, align: 'left' }, |
| | | { field: 'beforeStatus', title: 'åå¨åè´§ä½ç¶æ', type: 'int', width: 120, align: 'left', bind: { key: "LocationState", data: [] } }, |
| | | { field: 'afterStatus', title: 'åå¨åè´§ä½ç¶æ', type: 'int', width: 110, require: true, align: 'left', sort: true, bind: { key: "LocationState", data: [] } }, |
| | | { field: 'changeType', title: 'åå¨ç±»åï¼åºåºãå
¥åºãæå¨è°æ´...ï¼', type: 'string', width: 70, align: 'left' }, |
| | | { field: 'changeType', title: 'åå¨ç±»åï¼åºåºãå
¥åºãæå¨è°æ´...ï¼', type: 'string', width: 70, align: 'left', bind: { key: "StatusChangeType", data: [] } }, |
| | | { field: 'orderId', title: '忮䏻é®', type: 'string', width: 70, align: 'left' }, |
| | | { field: 'orderNo', title: 'åæ®ç¼å·', type: 'string', width: 110, align: 'left' }, |
| | | { field: 'orderDetailId', title: 'åæ®æç»ä¸»é®', type: 'string', width: 110, align: 'left' }, |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System.ComponentModel; |
| | | |
| | | namespace WIDESEA_Common |
| | | { |
| | | public enum StatusChangeTypeEnum |
| | | { |
| | | /// <summary> |
| | | /// èªå¨å
¥åº |
| | | /// </summary> |
| | | [Description("èªå¨å
¥åº")] |
| | | AutomaticStorage = 1, |
| | | |
| | | /// <summary> |
| | | /// èªå¨åºåº |
| | | /// </summary> |
| | | [Description("èªå¨åºåº")] |
| | | AutomaticDelivery = 2, |
| | | |
| | | /// <summary> |
| | | /// 人工æä½ |
| | | /// </summary> |
| | | [Description("人工æä½")] |
| | | ManualOperation = 3 |
| | | } |
| | | } |
| | |
| | | } |
| | | else if (dbType == SqlDbTypeName.Float || dbType == SqlDbTypeName.Decimal || dbType == SqlDbTypeName.Double) |
| | | { |
| | | |
| | | if (!val.IsNumber(null)) |
| | | { |
| | | reslutMsg = "䏿¯æææ°å"; |
| | |
| | | || dbType == SqlDbTypeName.Char |
| | | || dbType == SqlDbTypeName.Text)) |
| | | { |
| | | |
| | | //é»è®¤nvarchar(max) ãtext é¿åº¦ä¸è½è¶
è¿20000 |
| | | if (val.Length > 200000) |
| | | { |
| | |
| | | } |
| | | else |
| | | { |
| | | |
| | | int length = sugarColumn.Length; |
| | | if (length == 0) { return (true, null, null); } |
| | | //夿ååèä¸ååæ®µ |
| | |
| | | { typeof(byte),SqlDbTypeName.Int },//ç±»åå¾
å® |
| | | { typeof(Guid),SqlDbTypeName.UniqueIdentifier} |
| | | }; |
| | | |
| | | public static string GetProperWithDbType(this PropertyInfo propertyInfo) |
| | | { |
| | | bool result = ProperWithDbType.TryGetValue(propertyInfo.PropertyType, out string value); |
| | |
| | | } |
| | | continue; |
| | | } |
| | | string str = dic[property.Name.FirstLetterToLower()].ToString(); |
| | | string str = dic.GetValueOrDefault(property.Name.FirstLetterToLower(), "").ToString(); |
| | | //å°ææç©ºå¼è®¾ç½®ä¸ºnull |
| | | if (dic[property.Name.FirstLetterToLower()] != null && str == string.Empty) |
| | | dic[property.Name.FirstLetterToLower()] = null; |
| | |
| | | return string.Empty; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å®å
¨è·ååå
¸å¼ï¼å¦æé®ä¸å卿å¼ä¸ºnullåè¿åé»è®¤å¼ |
| | | /// </summary> |
| | | /// <typeparam name="TKey">åå
¸é®çç±»å</typeparam> |
| | | /// <typeparam name="TValue">åå
¸å¼çç±»å</typeparam> |
| | | /// <param name="dictionary">åå
¸å®ä¾</param> |
| | | /// <param name="key">é®</param> |
| | | /// <param name="defaultValue">é»è®¤å¼</param> |
| | | /// <returns>åå
¸å¼æé»è®¤å¼</returns> |
| | | public static TValue GetValueOrDefault<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, TValue defaultValue = default) |
| | | { |
| | | if (dictionary == null) throw new ArgumentNullException(nameof(dictionary)); |
| | | |
| | | return dictionary.TryGetValue(key, out TValue value) && value != null ? value : defaultValue; |
| | | } |
| | | |
| | | public static string GetKeyName(this Type typeinfo) |
| | | { |
| | | return typeinfo.GetProperties().GetKeyName(); |
¶Ô±ÈÐÂÎļþ |
| | |
| | | namespace WIDESEA_DTO |
| | | { |
| | | public class LocationChangeRecordDto |
| | | { |
| | | /// <summary> |
| | | /// è´§ä½ç¼ç |
| | | /// </summary> |
| | | public string LocationCode { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è´§ä½ID |
| | | /// </summary> |
| | | public int LocationId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åæ´åç¶æ |
| | | /// </summary> |
| | | public int BeforeStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åæ´åç¶æ |
| | | /// </summary> |
| | | public int AfterStatus { get; set; } |
| | | |
| | | /// <summary> |
| | | /// åæ´ç±»å |
| | | /// </summary> |
| | | public int ChangeType { get; set; } |
| | | |
| | | /// <summary> |
| | | /// è´§ä½ç¼ç |
| | | /// </summary> |
| | | public int TaskNum { get; set; } = 0; |
| | | } |
| | | } |
| | |
| | | namespace WIDESEA_IStorageBasicRepository; |
| | | using WIDESEA_DTO; |
| | | |
| | | namespace WIDESEA_IStorageBasicRepository; |
| | | |
| | | public interface ILocationStatusChangeRecordRepository : IRepository<DtLocationStatusChangeRecord> |
| | | { |
| | | /// <summary> |
| | | /// æ·»å è´§ä½åå¨è®°å½ |
| | | /// </summary> |
| | | /// <param name="changeRecordDto">æ°æ®æ¨¡å</param> |
| | | /// <returns></returns> |
| | | bool AddStatusChangeRecord(LocationChangeRecordDto changeRecordDto); |
| | | } |
| | |
| | | |
| | | public interface ITaskExecuteDetailRepository : IRepository<Dt_TaskExecuteDetail> |
| | | { |
| | | /// <summary> |
| | | /// æ·»å ä»»å¡æç» |
| | | /// </summary> |
| | | /// <param name="dt_Task">任塿°æ®</param> |
| | | /// <param name="isManual">æ¯å¦äººå·¥æä½</param> |
| | | /// <param name="message">æ§è¡ä¿¡æ¯</param> |
| | | /// <returns></returns> |
| | | Task<bool> AddDetailAsync(Dt_Task dt_Task, bool isManual, string message); |
| | | } |
| | |
| | | namespace WIDESEA_StorageBasicRepository |
| | | using WIDESEA_DTO; |
| | | |
| | | namespace WIDESEA_StorageBasicRepository |
| | | { |
| | | public class LocationStatusChangeRecordRepository : RepositoryBase<DtLocationStatusChangeRecord>, ILocationStatusChangeRecordRepository |
| | | { |
| | | public LocationStatusChangeRecordRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage) |
| | | { |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ·»å è´§ä½åå¨è®°å½ |
| | | /// </summary> |
| | | /// <param name="changeRecordDto">æ°æ®æ¨¡å</param> |
| | | /// <returns></returns> |
| | | public bool AddStatusChangeRecord(LocationChangeRecordDto changeRecordDto) |
| | | { |
| | | DtLocationStatusChangeRecord dtLocationStatusChangeRecord = new DtLocationStatusChangeRecord() |
| | | { |
| | | ChangeType = changeRecordDto.ChangeType, |
| | | LocationCode = changeRecordDto.LocationCode, |
| | | LocationId = changeRecordDto.LocationId, |
| | | Creater = "System", |
| | | TaskNum = changeRecordDto.TaskNum, |
| | | AfterStatus = changeRecordDto.AfterStatus, |
| | | BeforeStatus = changeRecordDto.BeforeStatus, |
| | | }; |
| | | return AddData(dtLocationStatusChangeRecord) > 0; |
| | | } |
| | | } |
| | | } |
| | |
| | | using WIDESEA_DTO; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_DTO; |
| | | |
| | | namespace WIDESEA_StorageBasicService; |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | public override WebResponseContent UpdateData(SaveModel saveModel) |
| | | { |
| | | int id = saveModel.MainData["id"].ObjToInt(); |
| | | int status = saveModel.MainData["locationStatus"].ObjToInt(); |
| | | var location = BaseDal.QueryFirst(x => x.Id == id); |
| | | |
| | | LocationChangeRecordDto changeRecordDto = new LocationChangeRecordDto() |
| | | { |
| | | AfterStatus = status, |
| | | BeforeStatus = location.LocationStatus, |
| | | TaskNum = 0, |
| | | LocationId = id, |
| | | LocationCode = location.LocationCode, |
| | | ChangeType = (int)StatusChangeTypeEnum.ManualOperation |
| | | }; |
| | | |
| | | _locationStatusChangeRecordRepository.AddStatusChangeRecord(changeRecordDto); |
| | | |
| | | return base.UpdateData(saveModel); |
| | | } |
| | | |
| | | #region å建åå§è´§ä½æ°æ® |
| | | |
| | |
| | | } |
| | | |
| | | #endregion å建åå§è´§ä½æ¹æ³ |
| | | |
| | | |
| | | |
| | | #endregion å
鍿¹æ³ |
| | | } |
| | |
| | | { |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ·»å ä»»å¡æç» |
| | | /// </summary> |
| | | /// <param name="dt_Task">任塿°æ®</param> |
| | | /// <param name="isManual">æ¯å¦äººå·¥æä½</param> |
| | | /// <param name="message">æ§è¡ä¿¡æ¯</param> |
| | | /// <returns></returns> |
| | | public async Task<bool> AddDetailAsync(Dt_Task dt_Task,bool isManual,string message) |
| | | { |
| | | Dt_TaskExecuteDetail dt_TaskExecuteDetail = new Dt_TaskExecuteDetail() |
| | |
| | | |
| | | if (task != null) |
| | | { |
| | | |
| | | // æ´æ°ç°æä»»å¡ |
| | | content = await UpdateExistingTask(input, areaInfo.AreaID, task); |
| | | } |
| | |
| | | int taskState; |
| | | string original = task.CurrentAddress; |
| | | DtLocationInfo location = new DtLocationInfo(); |
| | | int beforeStatus = 0; |
| | | |
| | | if (input.Type == (int)TaskTypeEnum.Outbound) |
| | | { |
| | |
| | | location = await GetLocationDistributeAsync(areaId, task.Roadway); |
| | | toAddress = location.LocationCode; |
| | | taskState = (int)InTaskStatusEnum.Line_InFinish; |
| | | beforeStatus = location.LocationStatus; |
| | | |
| | | // æ´æ°è´§ä½ä¿¡æ¯ |
| | | location.LocationStatus = (int)LocationEnum.Lock; |
| | |
| | | _unitOfWorkManage.BeginTran(); |
| | | bool isUpdateLo = true; |
| | | bool isUpdateChange = true; |
| | | |
| | | // å°è¯æ´æ°ä»»å¡ |
| | | bool isResult = await BaseDal.UpdateDataAsync(task); |
| | | bool isTaskDetail = await _taskExecuteDetailRepository.AddDetailAsync(task, true, TaskDescription.GetTaskUpdateDescription(task.PalletCode, original, input.Position, InTaskStatusEnum.Line_InFinish.GetIntegralRuleTypeEnumDesc())); |
| | | bool isTaskDetail = await _taskExecuteDetailRepository.AddDetailAsync(task, false, TaskDescription.GetTaskUpdateDescription(task.PalletCode, original, input.Position, InTaskStatusEnum.Line_InFinish.GetIntegralRuleTypeEnumDesc())); |
| | | if (input.Type != (int)TaskTypeEnum.Outbound) |
| | | { |
| | | DtLocationStatusChangeRecord dtLocationStatusChangeRecord = new DtLocationStatusChangeRecord() |
| | | LocationChangeRecordDto changeRecordDto = new LocationChangeRecordDto() |
| | | { |
| | | ChangeType = task.TaskType, |
| | | LocationCode = location.LocationCode, |
| | | LocationId = location.Id, |
| | | Creater = "System", |
| | | TaskNum = task.TaskNum, |
| | | AfterStatus = location.LocationStatus, |
| | | BeforeStatus = (int)LocationEnum.Free, |
| | | BeforeStatus = beforeStatus, |
| | | TaskNum = task.TaskNum.Value, |
| | | LocationId = location.Id, |
| | | LocationCode = location.LocationCode, |
| | | ChangeType = (int)StatusChangeTypeEnum.AutomaticStorage, |
| | | }; |
| | | isUpdateChange = await _locationStatusChangeRecordRepository.AddDataAsync(dtLocationStatusChangeRecord) > 0; |
| | | isUpdateChange = _locationStatusChangeRecordRepository.AddStatusChangeRecord(changeRecordDto); |
| | | isUpdateLo = await _locationRepository.UpdateDataAsync(location); |
| | | } |
| | | |
| | | if (isResult && isUpdateLo && isTaskDetail) |
| | | { |
| | | _unitOfWorkManage.CommitTran(); |