From b6a04be0a4cbf5d5a44006a09b83f52a71dfce27 Mon Sep 17 00:00:00 2001 From: haoyahui <2032914783@qq.com> Date: 星期五, 17 十一月 2023 10:19:48 +0800 Subject: [PATCH] 部门管理,仓库管理库管员,库存管理 --- admin-web/src/views/systemManger/server/user/index.vue | 2 admin-web/src/views/stock/inventorycount/inventorytask/index.vue | 3 admin-web/src/views/foundation/store/edit.vue | 38 admin-web/src/api/stock/inventory.js | 42 admin-web/src/views/stock/procure/purchaseOrder/detail.vue | 13 admin-web/src/views/stock/transfer/transferApplication/index.vue | 53 admin-web/src/views/foundation/store/index.vue | 31 admin-web/src/views/stock/accessStock/outbound/detail.vue | 5 admin-web/src/api/baseSetting/finsystenant.js | 9 admin-web/src/views/systemSetting/department/edit.vue | 136 ++ admin-web/src/views/stock/inventorycount/inventorytask/edit.vue | 41 admin-web/src/views/stock/accessStock/outbound/edit.vue | 87 admin-web/src/views/systemSetting/department/index.vue | 407 ++----- admin-web/src/views/stock/procure/receiptDetails/index.vue | 51 admin-web/src/api/system/deptment.js | 36 admin-web/src/views/foundation/store/person.vue | 215 ++++ admin-web/src/views/stock/transfer/transferApplication/edit.vue | 52 admin-web/src/views/stock/transfer/transferissue/index.vue | 12 admin-web/src/views/stock/scrap/itemScrapping/detail.vue | 6 admin-web/src/styles/store.scss | 201 ++++ admin-web/src/views/departmentitem/itemdis/distribution/detail.vue | 209 ++++ admin-web/src/views/systemManger/server/user/edit.vue | 16 admin-web/src/views/stock/procure/purchaseOrder/edit.vue | 35 /dev/null | 33 admin-web/src/api/stock/accessStock.js | 8 admin-web/src/views/departmentitem/itemdis/distribution/edit.vue | 549 +++++++++++ admin-web/src/views/departmentitem/itemdis/distribution/index.vue | 619 ++++------- admin-web/src/api/foudation/store.js | 26 admin-web/src/views/foundation/material/index.vue | 2 29 files changed, 1,999 insertions(+), 938 deletions(-) diff --git a/admin-web/src/api/baseSetting/finsystenant.js b/admin-web/src/api/baseSetting/finsystenant.js index aafc643..4215cc1 100644 --- a/admin-web/src/api/baseSetting/finsystenant.js +++ b/admin-web/src/api/baseSetting/finsystenant.js @@ -177,4 +177,13 @@ // 鐗╁搧鍒嗙被tree export function getCategorySelectTree(parameter) { return request.get(SettingIplatform.apiBaseURL + '/pc/base/category/select/tree', {params: parameter}) +} + +// 搴撳瓨 +export function warehouseSelectNumber(params) { + return request({ + url: '/pc/base/warehouse/select/number', + method: 'get', + params, + }); } \ No newline at end of file diff --git a/admin-web/src/api/foudation/store.js b/admin-web/src/api/foudation/store.js new file mode 100644 index 0000000..90589fb --- /dev/null +++ b/admin-web/src/api/foudation/store.js @@ -0,0 +1,26 @@ +import request from '@/utils/request' +import SettingIplatform from '@/utils/settingIplatform'; + +export function userSelectDepartment(params) { + return request({ + url: '/pc/fin/sys/tenant/user/select/department', + method: 'get', + params + }) +} +// 娣诲姞浠撳簱绠$悊鍛� +export function warehouseManagerAdd(data) { + return request({ + url: '/pc/base/warehouse/manager/add', + method: 'post', + data + }) +} +// 鏌ヨ浠撳簱绠$悊鍛� +export function warehouseManagerList(params) { + return request({ + url: '/pc/base/warehouse/manager/list', + method: 'get', + params + }) +} \ No newline at end of file diff --git a/admin-web/src/api/stock/accessStock.js b/admin-web/src/api/stock/accessStock.js index 7a0135e..f2fca52 100644 --- a/admin-web/src/api/stock/accessStock.js +++ b/admin-web/src/api/stock/accessStock.js @@ -24,14 +24,6 @@ params, }); } -// 搴撳瓨 -export function outputSelectNumber(params) { - return request({ - url: '/pc/l/wh/form/output/select/number', - method: 'get', - params, - }); -} // 鏄庣粏璇︽儏 export function outputDtailList(params) { return request({ diff --git a/admin-web/src/api/stock/inventory.js b/admin-web/src/api/stock/inventory.js new file mode 100644 index 0000000..804a57b --- /dev/null +++ b/admin-web/src/api/stock/inventory.js @@ -0,0 +1,42 @@ +import request from '@/utils/request'; + +// 鍒楄〃 +export function inventoryListApi(params) { + return '/pc/l/wh/form/inventory/list' +} + +// 鏂板 +export function inventoryAdd(data) { + return request({ + url: '/pc/l/wh/form/inventory/add', + method: 'post', + data, + }); +} + +// 缂栬緫 +export function inventoryEdit(data) { + return request({ + url: '/pc/l/wh/form/inventory/edit', + method: 'post', + data, + }); +} + +// 鍒犻櫎 +export function inventoryDel(data) { + return request({ + url: '/pc/l/wh/form/inventory/del', + method: 'post', + data, + }); +} + +// 瀹屾垚鐩樼偣 +export function inventoryFinish(data) { + return request({ + url: '/pc/l/wh/form/inventory/finish', + method: 'post', + data, + }); +} diff --git a/admin-web/src/api/system/deptment.js b/admin-web/src/api/system/deptment.js new file mode 100644 index 0000000..9a89cb5 --- /dev/null +++ b/admin-web/src/api/system/deptment.js @@ -0,0 +1,36 @@ +import request from '@/utils/request'; + +// 閮ㄩ棬鏂板 +export function departmentAdd(data) { + return request({ + url: '/pc/fin/sys/tenant/department/add', + method: 'post', + data, + }); +} +// 缂栬緫 +export function departmentEdit(data) { + return request({ + url: '/pc/fin/sys/tenant/department/edit', + method: 'post', + data, + }); +} + +// 缂栬緫 +export function departmentDetail(params) { + return request({ + url: '/pc/fin/sys/tenant/department/detail', + method: 'get', + params, + }); +} + +export function departmentListAll(params) { + return request({ + url: '/pc/fin/sys/tenant/department/list/all', + method: 'get', + params, + }); + } + diff --git a/admin-web/src/styles/store.scss b/admin-web/src/styles/store.scss new file mode 100644 index 0000000..3227b22 --- /dev/null +++ b/admin-web/src/styles/store.scss @@ -0,0 +1,201 @@ +.stock-container { + .ml-20 { + margin-left: 20px; + } + .card,.list-item { + display: flex; + flex-wrap: wrap; + margin: 0px !important; + width: 100%; + min-height: 100%; + .cm-item { + width: 100%; + } + .cm-item .el-card__body { + padding-bottom: 5px; + } + } + .card-data { + width: 100%; + position: relative; + margin-top: 8px; + .card-container { + .card-header { + height: 48px; + display: flex; + align-items: center; + justify-content: space-between; + background: #f3f9fe; + padding: 0 32px 0 15px; + box-sizing: border-box; + } + .card-header-left { + display: flex; + align-items: center; + color: #999999; + font-family: 'Microsoft YaHei UI'; + font-size: 18px; + font-weight: 700; + .value { + color: #3d3d3d; + } + + .states { + width: 54px; + height: 22px; + line-height: 22px; + text-align: center; + border-radius: 4px; + border: 1px solid #f9675b99; + background: rgba($color:#f9675b99,$alpha:0.1); + font-family: 'Microsoft YaHei'; + color: #f9675b; + font-size: 13px; + font-style: normal; + font-weight: 400; + margin-left: 8px; + } + .states-success { + border: 1px solid #39ad6199; + background: rgba($color:#39ad6199,$alpha:0.1); + color: #39ad61; + } + .states-info { + border: 1px solid #999999; + background: rgba($color:#999999,$alpha:0.1); + color: #999999; + } + .states-warning { + border: 1px solid #e6a23c; + background: rgba($color:#e6a23c,$alpha:0.1); + color: #e6a23c; + } + } + .one-hed { + margin-top: 15px; + padding: 0 32px 0 15px; + box-sizing: border-box; + .box { + display: inline-block; + margin-right: 20px; + } + .span-two { + color: #83919e; + font-size: 14px; + } + } + .card-end { + font-size: 14px; + color: #3d3d3d; + margin-top: 15px; + display: flex; + flex-wrap: wrap; + font-family: 'Microsoft YaHei UI'; + padding: 0 16px; + box-sizing: border-box; + .item { + width: 379px; + height: 60px; + padding: 8px 12px 9px 12px; + box-sizing: border-box; + align-items: center; + gap: 8px; + flex-shrink: 0; + background: #f9f9f9; + margin-right: 15px; + margin-bottom: 15px; + &:last-child { + margin-right: 0; + } + .name { + height: 22px; + line-height: 22px; + } + .value-box { + display: flex; + .value-box-item { + margin-right: 20px; + .label { + color: #99999999; + line-height: 22px; + } + .value { + color: #ff3131; + } + } + } + } + } + } + } + } + .no-data{ + margin-top: 100px; + text-align: center; + color: #909399; + } + + /*缂栬緫*/ + .stock-edit{ + .main-w { + width: 88%; + } + .goods-card { + position: relative; + background: #f6f6f6; + padding: 20px; + box-sizing: border-box; + border-radius: 4px; + background-color: #f9f9f9; + margin-top: 20px; + &:nth-of-type(1) { + margin-top: 0; + } + } + .btn-group { + width: 80px; + position: absolute; + right: -94px; + bottom: 0px; + .el-button { + margin-bottom: 10px; + margin-left: 0; + display: block; + &:last-child { + margin-bottom: 0; + } + } + } + } + + /*璇︽儏*/ + .stock-detail{ + .img-row { + display: flex; + align-content: center; + } + .img-box { + display: inline-block; + width: 80px; + height: 80px; + background: #f9f9f9; + margin-right: 20px; + cursor: pointer; + .img { + width: 100%; + } + } + + .goods-card { + position: relative; + background: #f6f6f6; + padding: 20px; + box-sizing: border-box; + border-radius: 4px; + background-color: #f9f9f9; + margin-top: 20px; + &:nth-of-type(1) { + margin-top: 0; + } + } + } \ No newline at end of file diff --git a/admin-web/src/views/departmentitem/itemdis/distribution/detail.vue b/admin-web/src/views/departmentitem/itemdis/distribution/detail.vue new file mode 100644 index 0000000..d306e90 --- /dev/null +++ b/admin-web/src/views/departmentitem/itemdis/distribution/detail.vue @@ -0,0 +1,209 @@ +<template> + <win-md class="stock-detail" :title="setting.title" @close="close" :width="'800px'"> + <el-row :gutter="20"> + <el-col :span="8"> + <span>鍏ュ簱鍗曞彿锛�</span> + <span>{{ detail.businessFormCode }}</span> + </el-col> + <el-col :span="8"> + <span>鍏ュ簱浠撳簱锛�</span> + <span>{{ detail.warehouseName }}</span> + </el-col> + <el-col :span="8"> + <span>鎵�灞炴満鏋勶細</span> + <span>{{ detail.agencyName }}</span> + </el-col> + </el-row> + <el-row :gutter="20" style="margin-top: 20px"> + <el-col :span="8"> + <span>鐘舵�侊細</span> + <span>{{ detail.states == 1 ? '寰呭叆搴�' : '宸插叆搴�' }}</span> + </el-col> + <el-col :span="8"> + <span>鍒涘缓浜猴細</span> + <span>{{ detail.buyerName }}</span> + </el-col> + <el-col :span="8"> + <span>鍏ュ簱鏃堕棿锛�</span> + <span>{{ detail.incomeTime | formatTime }}</span> + </el-col> + </el-row> + <el-row :gutter="20" style="margin-top: 20px"> + <el-col class="img-row" :span="12"> + <span>閲囪喘绫诲瀷锛�</span> + <span>{{ detail.buyType == 1 ? '闆嗛噰' : '鑷噰' }}</span> + </el-col> + </el-row> + <el-row :gutter="20" style="margin-top: 20px"> + <el-col class="img-row" :span="24"> + <span>閲囪喘鎵嬬画鐓х墖锛�</span> + <div class="img-box" v-for="(item, index) in fileList" :key="index" @click="handlePreview(item)"> + <img class="img" :src="getUrl(item.path)" alt="" /> + </div> + </el-col> + </el-row> + <div class="goods-card" v-for="(goodsItem, goodsIndex) in detail.procureGoods" :key="goodsIndex"> + <el-row :gutter="20"> + <el-col :span="8"> + <span>鐗╁搧鍒嗙被锛�</span> + <span>{{ goodsItem.baseCategoryName }}</span> + </el-col> + <el-col :span="8"> + <span>鐗╁搧鍚嶇О锛�</span> + <span>{{ goodsItem.goodsTemplateName }}</span> + </el-col> + <el-col :span="8"> + <span>渚涜揣鍟嗭細</span> + <span>{{ goodsItem.supplier }}</span> + </el-col> + </el-row> + <el-table :data="goodsItem.models" :stripe="true" style="margin-top: 20px"> + <el-table-column prop="baseGoodsModelsName" label="瑙勬牸鍨嬪彿" align="center"> + <template slot-scope="scope"> + {{ scope.row.baseGoodsModelsName }} + </template> + </el-table-column> + <el-table-column label="鍗曚綅" align="center"> + <template slot-scope="scope"> + {{ scope.row.unit }} + </template> + </el-table-column> + <el-table-column prop="price" label="鍗曚环" align="center"> + <template slot-scope="scope"> + {{ scope.row.price | formatPrice }} + </template> + </el-table-column> + <el-table-column prop="counts" label="鍏ュ簱鏁伴噺" align="center"> + <template slot-scope="scope"> + {{ scope.row.counts }} + </template> + </el-table-column> + <el-table-column prop="counts" label="閲戦" align="center"> + <template slot-scope="scope"> + {{ scope.row.price * scope.row.counts | formatPrice}} + </template> + </el-table-column> + </el-table> + </div> + <div id="uploadPreviewImages" style="display: none"> + <span v-for="(src, index) in fileList" :key="index"> + <img + v-if="checkImg(src.name)" + class="v-img" + :src="src.url" + :alt="src.name" + style="width: 100px; height: 100px" + /> + </span> + </div> + </win-md> +</template> +<script> +import { procureDetail } from '@/api/stock/procure/purchaseOrder'; +import winMd from '@/components/win/win-md'; +import * as DateFormatter from '@/utils/DateFormatter'; +import { getDownUrl } from '@/utils/base'; +import Viewer from 'viewerjs'; +import 'viewerjs/dist/viewer.css'; + +let viewer = null; + +export default { + components: { winMd }, + + props: { + setting: { + type: Object, + default: () => {}, + }, + }, + data() { + return { + fileList: [], + detail: { + baseCategoryName: '', + businessFormCode: '', + goodsTemplateName: '', + procureDoc: '', + agencyId: '', + agencyName: '', + states: '', + createName: '', + time: '', + procureGoods: [{}, {}], + fileKey: Math.random(), + }, + }; + }, + filters: { + formatTime(time) { + if (!time) return '-'; + return DateFormatter.LongToDateTime(time); + }, + formatPrice(price) { + return price / 100 + } + }, + created() { + procureDetail({ id: this.setting.id }).then((res) => { + this.detail = res; + this.fileList = this.detail.procureDoc ? JSON.parse(this.detail.procureDoc) : []; + this.$nextTick(() => { + this.initPreviewImg(); + }); + }); + }, + methods: { + initPreviewImg() { + if (viewer != null) { + viewer.destroy(); + } + const ViewerDom = document.querySelector('#uploadPreviewImages'); + viewer = new Viewer(ViewerDom, {}); + }, + handlePreview(file) { + if (!this.checkImg(file.name)) { + return false; + } + let index = 0; + for (let i = 0; i < this.fileList.length; i++) { + const f = this.fileList[i]; + if (this.checkImg(f.name)) { + if (file.id == f.id) { + break; + } + index++; + } + } + // this.fileList.forEach((f, i) => { + // if (file.uid == f.uid) { + // index = i + // } + // }) + // document.querySelector('#uploadPreviewImages').children[0].click() + viewer.view(index); + }, + checkImg(name) { + const suffix = name.substring(name.lastIndexOf('.'), name.length); + const imgArray = ['.jpg', '.jpeg', '.png', '.bmp']; + if (imgArray.indexOf(suffix) < 0) { + return false; + } + return true; + }, + getUrl(path) { + if (path.substr(0, 7).toLowerCase() == 'http://' || path.substr(0, 8).toLowerCase() == 'https://') { + return path; + } else { + return getDownUrl() + path; + } + }, + close() { + this.$emit('close'); + }, + }, +}; +</script> +<style lang="scss" scoped> +@import url(../../../../styles/store.scss); +</style> diff --git a/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue b/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue new file mode 100644 index 0000000..f9c6b1c --- /dev/null +++ b/admin-web/src/views/departmentitem/itemdis/distribution/edit.vue @@ -0,0 +1,549 @@ +<template> + <win-md class="stock-edit" :title="`${setting.title}閲囪喘鍏ュ簱`" @close="close" :width="'800px'"> + <el-form class="form" ref="ruleForm" :model="formData" :rules="rules" label-width="120px"> + <div class="main-w"> + <el-row :gutter="24" class="headerHeight"> + <el-col :span="12"> + <el-form-item label="鍏ュ簱浠撳簱" prop="warehouseId"> + <el-select v-model="formData.warehouseId" placeholder="璇烽�夋嫨" style="width: 100%"> + <el-option v-for="item in warehouses" :key="item.id" :label="item.warehouseName" :value="item.id" /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="閲囪喘鏃堕棿" prop="procureTime"> + <el-date-picker + v-model="formData.procureTime" + type="datetime" + value="yyyy-MM-dd HH:mm:ss" + value-format="yyyyMMddHHmmss" + placeholder="璇烽�夋嫨鏃ユ湡" + style="width: 100%" + > + </el-date-picker> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="24" class="headerHeight"> + <el-col :span="12"> + <el-form-item label="閲囪喘绫诲瀷" prop="buyType"> + <el-select v-model="formData.buyType" placeholder="璇烽�夋嫨" style="width: 100%"> + <el-option v-for="item in buyTypeOptions" :key="item.value" :label="item.label" :value="item.value" /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="24" class="headerHeight"> + <el-col :span="24"> + <el-form-item label="閲囪喘鍏ュ簱鎵嬬画" prop="procureDoc"> + <upload ref="uploadRef" :values="fileList" :settings="uploadSettings" @on-change="uploadChange"></upload> + </el-form-item> + </el-col> + </el-row> + <div class="goods-card" v-for="(goodsItem, goodsIndex) in formData.procureGoods" :key="goodsIndex"> + <el-row :gutter="24"> + <el-col :span="12"> + <el-form-item + label="鐗╁搧鍒嗙被" + :prop="`procureGoods[${goodsIndex}].baseCategoryIds`" + :rules="{ + required: true, + message: '璇烽�夋嫨', + trigger: 'change', + }" + > + <el-cascader + v-model="goodsItem.baseCategoryIds" + :options="categoryOptions" + :props="{ value: 'id' }" + @change="categoryChange($event, goodsIndex)" + style="width: 100%" + ></el-cascader> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item + label="鐗╁搧鍚嶇О" + :prop="`procureGoods[${goodsIndex}].baseGoodsTemplateId`" + :rules="rules.baseGoodsTemplateId" + > + <el-select + v-model="goodsItem.baseGoodsTemplateId" + placeholder="璇峰厛鎷╃墿鍝佸垎绫�" + filterable + :disabled="!goodsItem.baseCategoryId" + style="width: 100%" + @change="goodsTemplateChange($event, goodsIndex)" + > + <el-option + v-for="item in goodsItem.goodsOptions" + :key="item.id" + :label="item.goodsName" + :value="item.id" + /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="24"> + <el-col :span="12"> + <el-form-item + label="瑙勬牸鍨嬪彿" + :prop="`procureGoods[${goodsIndex}].modelsIds`" + :rules="{ + required: true, + message: '璇烽�夋嫨', + trigger: 'change', + }" + > + <el-select + v-model="goodsItem.modelsIds" + multiple + placeholder="璇峰厛鎷╃墿鍝佸悕绉�" + :disabled="!goodsItem.baseCategoryId" + @change="modelChange($event, goodsIndex)" + @remove-tag="modelRemoveTag($event, goodsIndex)" + style="width: 100%" + > + <el-option + v-for="item in goodsItem.modelsOptions" + :key="item.id" + :label="item.modelName" + :value="item.id" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="渚涜揣鍟�" prop="supplier"> + <el-input v-model="goodsItem.supplier" clearable maxlength="20" show-word-limit /> + </el-form-item> + </el-col> + </el-row> + <el-table :data="goodsItem.models" :stripe="true"> + <el-table-column prop="baseGoodsModelsId" label="瑙勬牸鍨嬪彿" align="center"> + <template slot-scope="scope"> + {{ getGoodsModelsName(scope.row.baseGoodsModelsId) }} + </template> + </el-table-column> + <el-table-column label="鍗曚綅" align="center"> + <template slot-scope="scope"> + {{ scope.row.unit }} + </template> + </el-table-column> + <el-table-column prop="priceYuan" label="鍗曚环锛堝厓锛�" align="center"> + <template slot-scope="scope"> + <el-form-item + label-width="0" + style="margin-bottom: 0" + :prop="`procureGoods[${goodsIndex}].models[${scope.$index}].priceYuan`" + :rules="rules.priceYuan" + > + <el-input + type="number" + v-model.number="scope.row.priceYuan" + @change="priceChange($event, goodsIndex, scope.$index)" + ></el-input> + </el-form-item> + </template> + </el-table-column> + <el-table-column prop="counts" label="閲囪喘鏁伴噺" align="center"> + <template slot-scope="scope"> + <el-form-item + label-width="0" + style="margin-bottom: 0" + :prop="`procureGoods[${goodsIndex}].models[${scope.$index}].counts`" + :rules="rules.counts" + > + <el-input v-model.number="scope.row.counts"></el-input> + </el-form-item> + </template> + </el-table-column> + </el-table> + <div class="btn-group"> + <el-button + v-if="formData.procureGoods.length > 1" + name="绉婚櫎" + type="danger" + plain + size="mini" + @click="removeGoods(goodsIndex)" + >绉婚櫎</el-button + > + <el-button + v-if="formData.procureGoods.length - 1 == goodsIndex" + name="鏂板鐗╁搧" + type="primary" + plain + size="mini" + @click="addGoods" + >鏂板鐗╁搧</el-button + > + </div> + </div> + </div> + </el-form> + <div slot="footer" align="center" class="dialog-footer"> + <my-button name="鍙栨秷" site="form" @click="close" /> + <my-button name="淇濆瓨" site="form" @click="handleSubmit" /> + </div> + </win-md> +</template> +<script> +import { + goodsTemplate, + procureAdd, + procureEdit, + selectTenantWarehouse, + goodsModel, + procureDetail, +} from '@/api/stock/procure/purchaseOrder'; +import { getTree } from '@/api/foudation/classification'; +import MyButton from '@/components/myButton/myButton'; +import winMd from '@/components/win/win-md'; +import upload from '@/components/upload/index'; +import { getUploadUrl, getDownUrl } from '@/utils/base'; +import { findParentIds } from '@/utils/index'; +import { mapGetters } from 'vuex'; + +export default { + components: { MyButton, winMd, upload }, + props: { + setting: { + type: Object, + default: () => {}, + }, + }, + data() { + // 鑷畾涔夋牎楠� + // 鐗╁搧閲嶅鏍¢獙 + var checkGoodsTemplateId = (rule, value, callback) => { + if (!value) { + return callback(new Error('璇烽�夋嫨')); + } + let temp = this.formData.procureGoods.filter((v) => v.baseGoodsTemplateId == value); + if (!temp || temp.length != 1) { + return callback(new Error('宸查�夎繃姝ょ墿鍝�')); + } + callback(); + }; + // 閲戦鏍¢獙 + var checkPrice = (rule, value, callback) => { + console.log(value); + if (!value) { + return callback(new Error('璇疯緭鍏�')); + } + if (value == 0) { + this.$message.warning('鏁板瓧鍊间笉鑳戒负0'); + return callback(new Error('鏁板瓧鍊间笉鑳戒负0')); + } + callback(); + }; + // 鏁伴噺鏍¢獙 + var checkCounts = (rule, value, callback) => { + console.log(value); + if (!value) { + return callback(new Error('璇疯緭鍏�')); + } + if (!Number.isInteger(value)) { + this.$message.warning('璇疯緭鍏ユ暟瀛楀��'); + return callback(new Error('璇疯緭鍏ユ暟瀛楀��')); + } + if (value == 0) { + this.$message.warning('鏁板瓧鍊间笉鑳戒负0'); + return callback(new Error('鏁板瓧鍊间笉鑳戒负0')); + } + callback(); + }; + return { + loading: false, + buyTypeOptions: [ + { + label: '闆嗛噰', + value: '1', + }, + { + label: '鑷噰', + value: '2', + }, + ], + fileList: [], + warehouses: [], // 鍏ュ簱浠撳簱鍒楄〃 + categoryOptions: [], // 鐗╁搧鍒嗙被鍒楄〃 + modelList: [], //鍨嬪彿鍒楄〃 + formData: { + procureDoc: '', + warehouseId: '', // 鍏ュ簱浠撳簱id + procureTime: '', // 閲囪喘鏃堕棿 + buyType: '2', // 閲囪喘鏂瑰紡锛�1锛氶泦閲囷紱2=鑷噰锛� + procureGoods: [], + }, + goodsItem: { + baseCategoryIds: '', // 鍒嗙被缂栧彿鏁扮粍 + baseCategoryId: '', // 鍒嗙被缂栧彿 + baseGoodsTemplateId: '', // 鐗╁搧妯$増缂栧彿 + goodsTemplateName: '', // 鐗╁搧妯$増鍚嶇О + supplier: '', // 渚涘簲鍟� + sort: '', // 鏄剧ず椤哄簭 + goodsOptions: [], // 鐗╁搧鍒楄〃select + modelsOptions: [], //瑙勬牸鍨嬪彿select + models: [], // 鐗╁搧鍚嶇О + modelsIds: [], //瑙勬牸鍨嬪彿 + }, + modelsItem: { + baseGoodsModelsId: '', // 瑙勬牸鍨嬪彿缂栧彿 + priceYuan: null, // 鍗曚环(鍏�) + price: null, // 鍗曚环(鍒� 閲囪喘闇�瑕侊紝璋冩嫧涓嶉渶瑕�) + counts: null, // 鎿嶄綔鏁伴噺 + unit: null, //鍗曚綅 + }, + rules: { + warehouseId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], + procureTime: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], + buyType: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], + + procureDoc: [{ required: true, message: '璇蜂笂浼�', trigger: 'change' }], + baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], + baseGoodsTemplateId: [{ validator: checkGoodsTemplateId, trigger: ['blur', 'change'] }], + modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], + priceYuan: [{ validator: checkPrice, trigger: 'blur' }], + counts: [{ validator: checkCounts, trigger: 'blur' }], + }, + + uploadSettings: { + title: '涓婁紶', + max: 20, // 鏈�澶уぇ灏忥紝鍗曚綅M + num: 10, // 鏀寔涓婁紶鍥剧墖涓暟 + accept: '.jpg,.png', // 闄愬埗鏍煎紡 + tip: '', // 鎻愮ず 榛樿锛歚鍙兘涓婁紶${this.defaultSettings.num}涓�${this.defaultSettings.accept}鏂囦欢锛屼笖涓嶈秴杩�${this.defaultSettings.max}kb` + uploadUrl: getUploadUrl(), // 涓婁紶璺緞 + multiple: true, // 鏄惁鏀寔鎵归噺涓婁紶 + disabled: false, // 鏄惁绂佺敤 + type: 'picture', // text/picture + }, + }; + }, + computed: { + ...mapGetters(['userInfo']), + }, + created() { + this.init(); + }, + methods: { + async init() { + this.getWarehouseList(); + this.getgoodsTemplate(); + this.getgoodsModel(); + // 鑾峰彇鐗╁搧鍒嗙被鍒楄〃 + const treeRes = await getTree(); + this.categoryOptions = this.removeEmptyChildren(treeRes); + if (this.setting.id) { + const detail = await procureDetail({ id: this.setting.id }); + this.formData = Object.assign(this.formData, detail); + if (this.formData.procureDoc) { + this.fileList = JSON.parse(this.formData.procureDoc); + } + this.$set(this.formData, 'buyType', this.formData.buyType.toString()); + this.formData.procureTime = this.formData.procureTime.toString(); + this.formData.procureGoods.map((item, index) => { + // 鏍规嵁瀛愰泦ID鎷兼帴鐗╁搧鍒嗙被鍒楄〃 + item.baseCategoryIds = findParentIds(this.categoryOptions, item.baseCategoryId); + this.$set( + this.formData.procureGoods[index], + 'modelsIds', + item.models.map((v) => v.baseGoodsModelsId), + ); + this.getgoodsTemplate(item.baseCategoryId, index); + this.getgoodsModel(item.baseGoodsTemplateId, index); + item.models.forEach((child, childIndex) => { + this.$set(this.formData.procureGoods[index].models[childIndex], 'priceYuan', child.price / 100); + }); + return item; + }); + } + }, + + // 鑾峰彇鍏ュ簱浠撳簱鍒楄〃 + getWarehouseList() { + selectTenantWarehouse({ agencyId: this.userInfo.tenantId }) + .then((res) => { + this.warehouses = res; + if (!this.setting.id && res.length) { + this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); + } + if (this.warehouses.length && !this.formData.warehouseId) { + // 榛樿閫変腑绗竴涓粨搴� + this.formData.warehouseId = this.warehouses[0].id; + } + }) + .catch((err) => { + console.log('err', err); + }); + }, + + removeEmptyChildren(arr) { + arr.forEach((item) => { + if (!item.children || !item.children.length) { + delete item.children; + } else { + this.removeEmptyChildren(item.children); + } + }); + return arr; + }, + + // 鑾峰彇鐗╁搧鍚嶇О鍒楄〃 + getgoodsTemplate(id, index) { + goodsTemplate({ categoryId: id || '' }).then((res) => { + if (index || index == 0) { + this.$set(this.formData.procureGoods[index], 'goodsOptions', res); + } else { + this.goodsTemplatelAll = res; + } + }); + }, + + // 瑙勬牸鍨嬪彿 + getgoodsModel(id, index) { + goodsModel({ goodsTemplatesId: id || '' }).then((res) => { + if (index || index == 0) { + this.$set(this.formData.procureGoods[index], 'modelsOptions', res); + } else { + this.goodsModelAll = res; + } + }); + }, + + // 鏍规嵁鐗╁搧鍚嶇Оid鑾峰彇鍚嶅瓧 + getGoodsTemplateName(id) { + let item = this.goodsTemplatelAll.find((v) => v.id == id); + if (item) { + return item.goodsName; + } + return; + }, + + // 鏍规嵁瑙勬牸鍨嬪彿id鑾峰彇鍚嶅瓧 + getGoodsModelsName(id) { + let item = this.goodsModelAll.find((v) => v.id == id); + if (item) { + return item.modelName; + } + return; + }, + + // 鐗╁搧鍒嗙被閫夋嫨 + categoryChange(e, index) { + this.formData.procureGoods[index].goodsOptions = []; + this.formData.procureGoods[index].baseGoodsTemplateId = ''; + this.formData.procureGoods[index].goodsTemplateName = ''; + this.formData.procureGoods[index].modelsOptions = []; + this.formData.procureGoods[index].modelsIds = []; + this.formData.procureGoods[index].models = []; + + this.formData.procureGoods[index].baseCategoryId = e[e.length - 1]; + // 鏍规嵁閫変腑鍒嗙被璇锋眰鐗╁搧鍚嶇О鍒楄〃 + this.getgoodsTemplate(e[e.length - 1], index); + }, + + // 鐗╁搧鍚嶇О鍒楄〃 + goodsTemplateChange(e, index) { + this.formData.procureGoods[index].modelsOptions = []; + this.formData.procureGoods[index].modelsIds = []; + this.formData.procureGoods[index].models = []; + + this.formData.procureGoods[index].goodsTemplateName = this.getGoodsTemplateName(e); + // 鏍规嵁閫変腑鐗╁搧鍚嶇Оid鑾峰彇瑙勬牸鍨嬪彿鍒楄〃 + this.getgoodsModel(e, index); + }, + + // 瑙勬牸鍨嬪彿閫夋嫨 + modelChange(e, index) { + let arr = [...this.formData.procureGoods[index].models]; + let str = JSON.stringify(arr); + e.forEach((item) => { + if (str.indexOf(item) == -1) { + let temp = this.goodsModelAll.find((v) => v.id == item); + arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit }); + } + }); + this.formData.procureGoods[index].models = arr; + }, + + // 瑙勬牸鍨嬪彿绉婚櫎 + modelRemoveTag(e, index) { + let arr = this.formData.procureGoods[index].models; + let delIndex = arr.findIndex((v) => v.baseGoodsModelsId == e); + this.formData.procureGoods[index].models.splice(delIndex, 1); + }, + + // 浠锋牸input鐩戝惉 杞负鍒� + priceChange(e, goodsIndex, index) { + this.formData.procureGoods[goodsIndex].models[index].price = e * 100; + }, + + // 涓婁紶 + uploadChange() { + let arr = this.$refs.uploadRef.fileList; + this.formData.procureDoc = JSON.stringify(arr); + }, + + // 鐐瑰嚮鏂板鐗╁搧 + addGoods() { + this.formData.procureGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); + }, + + // 鐐瑰嚮绉婚櫎 + removeGoods(index) { + this.formData.procureGoods.splice(index, 1); + }, + + // 鎻愪氦 + handleSubmit() { + this.$refs['ruleForm'].validate((valid) => { + if (valid) { + console.log('formData', this.formData); + debugger; + if (!this.setting.id) { + procureAdd(this.formData) + .then((res) => { + this.$message.success('淇濆瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); + }) + .catch((err) => { + console.log('create err', err); + this.$message.error('淇濆瓨澶辫触'); + }); + } else { + procureEdit(this.formData) + .then((res) => { + this.$message.success('淇濆瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); + }) + .catch((err) => { + console.log('edit err', err); + this.$message.error('淇濆瓨澶辫触'); + }); + } + } else { + this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��'); + } + }); + }, + + close() { + this.formData = { + warehouseId: '', // 鍏ュ簱浠撳簱id + procureTime: '', // 閲囪喘鏃堕棿 + procureGoods: [], + }; + this.$emit('close'); + }, + }, +}; +</script> +<style scoped lang="scss"> +@import url(../../../../styles/store.scss); +</style> diff --git a/admin-web/src/views/departmentitem/itemdis/distribution/index.vue b/admin-web/src/views/departmentitem/itemdis/distribution/index.vue index ea1d5b0..0c1733b 100644 --- a/admin-web/src/views/departmentitem/itemdis/distribution/index.vue +++ b/admin-web/src/views/departmentitem/itemdis/distribution/index.vue @@ -1,118 +1,109 @@ <template> - <div class="app-container"> + <div class="app-container stock-container"> <el-container> - <el-container> - <el-card class="box-card" style="width: 100%" shadow="never"> - <!--鎼滅储鏉′欢--> - <div class="filter-container"> - <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search> - </div> - <el-row style="margin-top: 15px"> - <el-col> - <!--鍒楄〃--> - <my-button name="鏂板" @click="addtable" site="form" /> - <div :style="{'overflow-y': 'auto', height:`${clientHeight - 320}px`}"> - <el-row class="card" - :gutter="5"> - <el-col v-for="(item, index) in proData" :key="index" class="cm-item"> - <el-card class="card-data"> - <div class="card-container"> - <div class="hed-one">鍑哄簱鍗曞彿锛歿{ item.order_no }}</div> - <div class="one-hed"> - <div class="box"><span class="span-two">鏈烘瀯锛�</span>{{ item.customer_name }}</div> - <div class="box"><span class="span-two">鎿嶄綔浜猴細</span>{{ item.customer_name }}</div> - <div class="box"><span class="span-two">鍑哄簱鏃堕棿锛�</span>{{ item.customer_name }}</div> - </div> - <div class="card-end"> - <div v-for="(just, index) in item.data" class="two-end"> - <div class="item"><span>{{ just.order_no }}锛�</span>{{ just.customer_name }}</div> - </div> - </div> - </div> - <div class="card-but"> - <my-button name="鏌ョ湅璇︽儏" site="form" /> - <my-button name="瀵煎嚭鍑哄簱鍗�" site="form" /> - </div> - </el-card> - </el-col> - </el-row> - </div> - <el-pagination - :small="false" - :current-page="1" - :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]" - :page-size="10" - layout="total, sizes, prev, pager, next, jumper" - :total="0" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> - </el-col> - </el-row> - <!--娣诲姞/缂栬緫寮圭獥--> - <el-dialog title="鏂板鍑哄簱" :close-on-click-modal="false" :visible.sync="adddialog" width="60%" > - <el-form ref="ruleForm" :model="formData" class="demo-ruleForm" label-width="100px"> - <el-row :gutter="24" class="headerHeight"> - <el-col :span="12"> - <el-form-item label="浠撳簱鍚嶇О" prop="name"> - <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="浠撳簱鍚嶇О" prop="name"> - <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="24" class="headerHeight"> - <el-col :span="24"> - <el-form-item label="鍑哄簱鎵嬬画" prop="name"> - 浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢 - </el-form-item> - </el-col> - </el-row> - <div style="position: relative;"> - <div style="background-color: #F9F9F9;width: 90%;"> - <el-row :gutter="24" class=""> - <el-col :span="12"> - <el-form-item label="浠撳簱鍚嶇О" prop="name"> - <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="浠撳簱鍚嶇О" prop="name"> - <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="24" class=""> - <el-col :span="12"> - <el-form-item label="浠撳簱鍚嶇О" prop="name"> - <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/> - </el-form-item> - </el-col> - </el-row> - <el-table :data="formData.tableData" height="100%" :stripe="true"> - <el-table-column prop="projectName" label="瑙勬牸鍨嬪彿" align="center"> </el-table-column> - <el-table-column prop="time1" label="鍗曚綅" align="center"> </el-table-column> - <el-table-column prop="unit" label="鐜版湁搴撳瓨" align="center"> </el-table-column> - <el-table-column prop="time2" label="鍑哄簱鏁伴噺" align="center"> </el-table-column> - </el-table> - </div> - <div style="position: absolute;right: 0;top: 152px;"> - <my-button style="display: block;margin-left: 10px;margin-bottom: 5px;" name="绉婚櫎" site="form"/> - <my-button name="鏂板鐗╁搧" site="form"/> - </div> - </div> - </el-form> - <div slot="footer" align="center" class="dialog-footer"> - <my-button name="纭畾" site="form" /> - <my-button name="鍙栨秷" site="form" @click="adddialog = false"/> + <el-card class="box-card" style="width: 100%" shadow="never"> + <!--鎼滅储鏉′欢--> + <div class="filter-container"> + <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search> + </div> + <el-row style="margin-top: 15px"> + <el-col> + <!--鍒楄〃--> + <div class="table-tool-bar" style="margin-bottom: 15px"> + <my-button name="鏂板" @click="handleAdd" site="tools" size="medium" /> + <my-button name="瀵煎叆" @click="importSetting.dialogShow = true" site="tools" size="medium" /> </div> - </el-dialog> - </el-card> - </el-container> + <div :style="{ 'overflow-y': 'auto', height: `${clientHeight - 320}px` }" v-loading="loading"> + <el-row v-if="list.length" class="card" :gutter="5"> + <el-col v-for="(item, index) in list" :key="index" class="cm-item"> + <el-card class="card-data"> + <div class="card-container"> + <div class="card-header"> + <div class="card-header-left"> + <span>鍏ュ簱鍗曞彿锛�</span> + <span class="value">{{ item.businessFormCode }}</span> + <div class="states" :class="item.states == 1 ? '' : 'states-success'"> + {{ item.states == 1 ? '寰呭叆搴�' : '宸插叆搴�' }} + </div> + </div> + <div class="card-header-right"> + <template v-if="item.states == 1"> + <el-button name="缂栬緫" site="form" type="success" size="mini" @click="handleEdit(item)" + >缂栬緫</el-button + > + <el-button name="鍏ュ簱" site="form" type="primary" size="mini" @click="handleIncome(item)" + >鍏ュ簱</el-button + > + <el-button name="鍒犻櫎" site="form" type="danger" size="mini" @click="del(item)" + >鍒犻櫎</el-button + > + </template> + <template v-if="item.states != 1"> + <el-button site="form" type="success" size="mini" @click="handleExport(item)" + >瀵煎嚭鍏ュ簱鍗�</el-button + > + </template> + <el-button name="鏌ョ湅璇︽儏" site="form" type="info" size="mini" @click="handleDetail(item)" + >鏌ョ湅璇︽儏</el-button + > + </div> + </div> + <div class="one-hed"> + <div class="box"><span class="span-two">鏈烘瀯锛�</span>{{ item.agencyId }}</div> + <div class="box"><span class="span-two">鎿嶄綔浜猴細</span>{{ item.buyerName }}</div> + <div class="box"> + <span class="span-two">閲囪喘鏃堕棿锛�</span>{{ item.procureTime | formatTime }} + </div> + <div class="box"> + <span class="span-two">鍏ュ簱鏃堕棿锛�</span>{{ item.incomeTime | formatTime }} + </div> + </div> + <div class="card-end"> + <div v-for="(just, index) in item.fromProcureTemplateInfoList" :key="index" class="item"> + <div class="name">{{ just.goodsTemplateName }}</div> + <div class="value-box"> + <div class="value-box-item"> + <span class="label">鏁伴噺锛�</span> + <span class="value">{{ just.count }}</span> + <span class="unit">{{ just.unit }}</span> + </div> + </div> + </div> + </div> + </div> + </el-card> + </el-col> + </el-row> + <div class="no-data" v-else>鏆傛棤鏁版嵁</div> + </div> + <el-pagination + :small="false" + :current-page="pageNum" + :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]" + :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> + </el-col> + </el-row> + </el-card> </el-container> + <!--娣诲姞/缂栬緫寮圭獥--> + <edit + v-if="editSetting.show" + :setting="editSetting" + ref="editRef" + @close="editSetting.show = false" + @search="refreshData" + ></edit> + <detail + v-if="detailSetting.show" + :setting="detailSetting" + @close="detailSetting.show = false" + ref="detailRef" + ></detail> <my-import :import-setting="importSetting" :dialog-show="importSetting.dialogShow" @@ -122,328 +113,178 @@ </template> <script> -import MyButton from "@/components/myButton/myButton"; +import { procureList, procureDel, procureIncome } from '@/api/stock/procure/purchaseOrder'; +import MyButton from '@/components/myButton/myButton'; import SettingIplatform from '@/utils/settingIplatform'; -import myImport from '@/views/components/myImport' -import {getBaseUrl} from '@/utils/base'; +import myImport from '@/views/components/myImport'; +import edit from './edit'; +import detail from './detail'; +import { getBaseUrl } from '@/utils/base'; +import listPage from '../../../mixins/listPage' export default { - name: "index", - components: {MyButton, myImport}, + name: 'index', + mixins: [listPage], + components: { MyButton, myImport, edit, detail }, data() { return { - + loading: false, adddialog: false, - formData:{ - tableData:[ - { - projectName:'555' - }, - { - projectName:'444' - } - ], - }, + list: [], // 鎼滅储妗� items: [ { type: 'text', - dataIndex: 'name', - label: '鍑哄簱鍗曞彿', + dataIndex: 'businessFormCode', + label: '鍏ュ簱鍗曞彿', placeholder: '璇疯緭鍏�', - defaultValue: '' + defaultValue: '', }, { type: 'text', - dataIndex: 'name', + dataIndex: 'goodsTemplateName', label: '鐗╁搧鍚嶇О', placeholder: '鍙ā绯婃悳绱�', - defaultValue: '' + defaultValue: '', + }, + { + type: 'cascader', + dataIndex: 'agencyId', + label: '鏈烘瀯', + placeholder: '璇烽�夋嫨', + optionsConfig: { url: '/pc/fin/sys/tenant/select/tree_fin_tenant', props: null }, + defaultValue: '', + options: [], }, { type: 'text', - dataIndex: 'name', + dataIndex: 'createName', label: '鍒涘缓浜�', placeholder: '璇疯緭鍏�', - defaultValue: '' + defaultValue: '', + }, + { + type: 'select', + dataIndex: 'states', + label: '鐘舵��', + placeholder: '璇烽�夋嫨', + defaultValue: '', + options: [ + { + label: '鍏ㄩ儴', + value: '', + }, + { + label: '寰呭叆搴�', + value: '1', + }, + { + label: '宸插叆搴�', + value: '2', + }, + ], }, { type: 'date-picker', - dataIndex: 'val1', - label: '鍑哄簱鏃堕棿', - defaultValue: '' + dataIndex: 'incomeTimeStart', + label: '鍏ュ簱鏃堕棿', + defaultValue: '', }, { type: 'date-picker', - dataIndex: 'val2', + dataIndex: 'incomeTimeEnd', label: '鑷�', - defaultValue: '' + defaultValue: '', }, - // { - // type: 'select', - // dataIndex: 'status', - // label: '鐘舵��', - // placeholder: '璇烽�夋嫨', - // defaultValue: '1', - // options: [ - // { - // label: '鍚敤', - // value: '1' - // }, - // { - // label: '绂佺敤', - // value: '0' - // } - // ] - // } - ], - proData: [ - { - order_no:'55555', - customer_name:'666', - data:[ - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'20浠�' - }, - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'666' - }, - ] - }, - { - order_no:'55555', - customer_name:'666', - data:[ - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'666' - }, - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'666' - }, - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'666' - }, - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'666' - }, - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'666' - }, - ] - }, - { - order_no:'55555', - customer_name:'666', - data:[ - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'20浠�' - }, - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'666' - }, - ] - }, - { - order_no:'55555', - customer_name:'666', - data:[ - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'20浠�' - }, - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'666' - }, - ] - - }, - { - order_no:'55555', - customer_name:'666', - data:[ - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'20浠�' - }, - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'666' - }, - ] - - }, - { - order_no:'55555', - customer_name:'666', - data:[ - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'20浠�' - }, - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'666' - }, - ] - - }, - { - order_no:'55555', - customer_name:'666', - data:[ - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'20浠�' - }, - { - order_no:'鐭冲嫆鑺鑹茬⒊绮�', - customer_name:'666' - }, - ] - - } ], // 鏍戞暟鎹� treeDataList: [], - // 鎼滅储鏉′欢 - filterFrom: { - tenantId: null, - userName: null, - userPhone: null, - status: 1 - }, // 瀵煎叆 importSetting: { - dialogTitle: '瀵煎叆', - dialogShow: false, - fileSettings: { - data: {}, - uploadUrl: getBaseUrl()+"/pc/fin/sys/tenant/import", // 涓婁紶鍦板潃 - accept: '.xls', // 鏍煎紡 - type: 'text', // 鍥炴樉褰㈠紡 - loading: false // 瀵煎叆鏁堟灉 - }, - /* 妯℃澘涓嬭浇 */ - templateSettings: { - templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О - templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate' // 涓嬭浇鍦板潃 - }, - onSuccess: null + dialogTitle: '瀵煎叆', + dialogShow: false, + fileSettings: { + data: {}, + uploadUrl: getBaseUrl() + '/pc/fin/sys/tenant/import', // 涓婁紶鍦板潃 + accept: '.xls', // 鏍煎紡 + type: 'text', // 鍥炴樉褰㈠紡 + loading: false, // 瀵煎叆鏁堟灉 + }, + /* 妯℃澘涓嬭浇 */ + templateSettings: { + templateName: '瀵煎叆妯℃澘.xls', // 鍚嶇О + templateUrl: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/getImportTemplate', // 涓嬭浇鍦板潃 + }, + onSuccess: null, }, - editSetting: { - title: '', - id: '', - orgId: '', - show: false, - }, - } - }, - computed: { - clientHeight () { - return document.documentElement.clientHeight - }, - }, - created() { + }; }, methods: { - handleSizeChange(){}, - handleCurrentChange(){}, + fetchData() { + this.loading = true; + procureList({ + pageNum: this.pageNum, + pageSize: this.pageSize, + ...this.filterFrom, + }).then((res) => { + this.list = res.datas; + this.total = res.totalRows; + this.loading = false; + console.log(this.list); + }); + }, + //瀵煎叆 importOrg() { - this.importSetting.dialogShow = true - this.importSetting.onSuccess = (response, callBack) => { - if (response.code===1){ - this.$message.success(response.msg) - this.search(1) - }else{ - this.$message.warning(response.msg) - } - callBack() + this.importSetting.dialogShow = true; + this.importSetting.onSuccess = (response, callBack) => { + if (response.code === 1) { + this.$message.success(response.msg); + this.search(1); + } else { + this.$message.warning(response.msg); } + callBack(); + }; }, - - addtable() { - this.adddialog = true + // 鍏ュ簱 + handleIncome(row) { + this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode} 鍏ュ簱鍚�?`, '閲囪喘鍏ュ簱').then(() => { + procureIncome({ id: row.id }) + .then((res) => { + this.$message.success('鍏ュ簱鎴愬姛锛�'); + this.search(); + }) + .catch(() => {}); + }); }, - // 鏌ヨtable鍒楄〃 - search(pageNum) { - if (pageNum != undefined) { - // this.$refs.myTable.search(pageNum) - } else { - // this.$refs.myTable.search() - } + del(row) { + this.$modal.confirm('鏄惁纭鍒犻櫎鍏ュ簱鍗曞彿涓�"' + row.businessFormCode + '"鐨勬暟鎹悧锛�').then( () => { + procureDel({ id: row.id }) + .then((res) => { + this.$message.success('鍒犻櫎鎴愬姛锛�'); + this.search(); + }) + .catch(() => {}); + }); }, fifterForm(params) { - console.log(params,'555'); - this.filterFrom = Object.assign(this.filterFrom, params) - this.search(1) - } - } -} + this.filterFrom = Object.assign(this.filterFrom, params); + if (this.filterFrom.incomeTimeStart) { + this.filterFrom.incomeTimeStart = this.filterFrom.incomeTimeStart.replace(/\-/g, ''); + } + if (this.filterFrom.incomeTimeEnd) { + this.filterFrom.incomeTimeEnd = this.filterFrom.incomeTimeEnd.replace(/\-/g, ''); + } + if (this.filterFrom.agencyId && this.filterFrom.agencyId.length) { + this.filterFrom.agencyId = this.filterFrom.agencyId[this.filterFrom.agencyId.length - 1]; + } + this.search(1); + }, + }, +}; </script> -<style scoped> -.card { - display: flex; - flex-wrap: wrap; - margin: 0px !important; - .cm-item { - width: 100%; - } - .cm-item /deep/ .el-card__body { - padding: 10px; - } -} -.card-data{ - margin-top: 8px; - .card-container{ - display: inline-block; - width: 70%; - .hed-one{ - color: #2298EE; - font-size: 18px; - } - .one-hed{ - margin-top: 15px; - .box{ - display: inline-block; - margin-right: 20px; - } - } - .span-two{ - color: #83919e; - font-size: 14px; - } - .card-end{ - font-size: 14px; - color: #3d3d3d; - margin-top: 15px; - display: flex; - flex-wrap: wrap; - .two-end{ - width: calc(33.33% - 20px); - margin-bottom: 15px; - } - } - - } - .card-but{ - display: inline-block; - } - .end{ - display: inline-block; - } - -} - +<style scoped lang="scss"> +@import url(../../../../styles/store.scss); </style> diff --git a/admin-web/src/views/foundation/material/index.vue b/admin-web/src/views/foundation/material/index.vue index 12b56a6..314fbb1 100644 --- a/admin-web/src/views/foundation/material/index.vue +++ b/admin-web/src/views/foundation/material/index.vue @@ -164,7 +164,7 @@ {title: '鍒嗙被', field: 'categoryName', align: 'center'}, {title: '绫诲埆', field: 'classification', align: 'center'}, // {title: '閲囪喘绫诲瀷', field: 'categoryId', align: 'center'}, - {title: '鎵�灞炴満鏋�', field: '', align: 'center'}, + {title: '鎵�灞炴満鏋�', field: 'agencyName', align: 'center'}, { title: '鍒涘缓鏃堕棿', field: 'createDate', diff --git a/admin-web/src/views/foundation/store/edit.vue b/admin-web/src/views/foundation/store/edit.vue index c60e02f..5a23abe 100644 --- a/admin-web/src/views/foundation/store/edit.vue +++ b/admin-web/src/views/foundation/store/edit.vue @@ -41,6 +41,7 @@ import winSm from '@/components/win/win-sm'; import myButton from '@/components/myButton/myButton'; import * as finsystenant from '@/api/baseSetting/finsystenant'; +import { findParentIds } from '@/utils/index'; export default { components: { winSm, myButton }, @@ -92,7 +93,7 @@ finsystenant.getTree().then((res) => { if (res) { this.treeList = res; - this.$set(this.formData,'agencyIds',this.findParentIds(this.treeList,this.formData.agencyId)) + this.$set(this.formData,'agencyIds',findParentIds(this.treeList,this.formData.agencyId)) } }); }, @@ -134,41 +135,6 @@ this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��'); } }); - }, - // 閫氳繃瀛愰泦id鏌ュ埌鎵�浠ョ浉鍏崇埗绾d骞惰繑鍥炴暟缁� - findParentIds(dataSource, nodeId) { - const parentIds = [nodeId]; // 鐢ㄤ簬瀛樺偍鎵�鏈夌埗鑺傜偣ID鐨勬暟缁� - - // 瀹氫箟涓�涓�掑綊鍑芥暟锛岀敤浜庨亶鍘嗘暣妫垫爲骞舵煡鎵惧瓙鑺傜偣鐨勬墍鏈夌埗鑺傜偣 - function traverse(node, nodeId) { - if (node.id === nodeId) { - // 濡傛灉褰撳墠鑺傜偣鐨処D绛変簬瀛愯妭鐐圭殑ID锛屽垯琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣锛屽彲浠ュ紑濮嬪悜涓婃煡鎵剧埗鑺傜偣 - return true; // 杩斿洖true琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣 - } - - if (node.children) { - // 濡傛灉褰撳墠鑺傜偣鏈夊瓙鑺傜偣锛屽垯缁х画閬嶅巻瀛愯妭鐐� - for (const childNode of node.children) { - if (traverse(childNode, nodeId)) { - // 濡傛灉鍦ㄥ瓙鑺傜偣涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欏皢褰撳墠鑺傜偣鐨処D娣诲姞鍒扮埗鑺傜偣ID鏁扮粍涓紝骞惰繑鍥瀟rue琛ㄧず宸茬粡鎵惧埌浜嗗瓙鑺傜偣 - parentIds.unshift(node.id); - return true; - } - } - } - - return false; // 濡傛灉褰撳墠鑺傜偣涓嶆槸瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欒繑鍥瀎alse - } - - // 浠庢牴鑺傜偣寮�濮嬮亶鍘嗘暣妫垫爲锛屽苟璋冪敤閫掑綊鍑芥暟鏌ユ壘瀛愯妭鐐圭殑鎵�鏈夌埗鑺傜偣 - for (const node of dataSource) { - if (traverse(node, nodeId)) { - // 濡傛灉鍦ㄥ綋鍓嶈妭鐐圭殑瀛愭爲涓壘鍒颁簡瀛愯妭鐐圭殑鐖惰妭鐐癸紝鍒欑洿鎺ラ��鍑哄惊鐜� - break; - } - } - - return parentIds; // 杩斿洖鎵�鏈夌埗鑺傜偣ID鐨勬暟缁� }, }, }; diff --git a/admin-web/src/views/foundation/store/index.vue b/admin-web/src/views/foundation/store/index.vue index 9df6b08..965ccfe 100644 --- a/admin-web/src/views/foundation/store/index.vue +++ b/admin-web/src/views/foundation/store/index.vue @@ -15,6 +15,7 @@ </el-row> <!--娣诲姞/缂栬緫寮圭獥--> <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search"/> + <person v-if="personSetting.show" :setting="personSetting" @close="personSetting.show = false" @search="search"/> </el-card> </el-container> </el-container> @@ -31,13 +32,14 @@ import MyButton from "@/components/myButton/myButton"; import SettingIplatform from '@/utils/settingIplatform'; import edit from './edit' +import person from './person' import * as finsystenant from '@/api/baseSetting/finsystenant' import myImport from '@/views/components/myImport' import {getBaseUrl} from '@/utils/base'; export default { name: "index", - components: {MyButton, MyTableV2, edit, myImport}, + components: {MyButton, MyTableV2, edit, myImport, person}, data() { return { // 鎼滅储妗� @@ -95,6 +97,12 @@ onSuccess: null }, editSetting: { + title: '', + id: '', + orgId: '', + show: false, + }, + personSetting: { title: '', id: '', orgId: '', @@ -161,7 +169,7 @@ // 鎿嶄綔淇℃伅 operation: { show: true, // 鏄剧ず鎿嶄綔鍒� - width: '150', // 鍒楀 + width: '250', // 鍒楀 attr: [ { title: '缂栬緫', @@ -175,12 +183,13 @@ this.del(row); }, }, - // { - // title: '浠撳簱鍛�', - // events: (row) => { - // this.showAudit(row); - // }, - // } + { + title: '搴撶鍛�', + type:'primary', + events: (row) => { + this.showPerson(row); + }, + } ], }, paging: { @@ -270,6 +279,12 @@ this.editSetting.title = '缂栬緫'; this.editSetting.show = true; }, + showPerson(row) { + this.personSetting.id = row.id; + this.personSetting.info = JSON.stringify(row); + this.personSetting.title = '閫夋嫨搴撶鍛�'; + this.personSetting.show = true; + }, nodeClick(param) { param = param || {} this.p = Object.assign({}, { diff --git a/admin-web/src/views/foundation/store/person.vue b/admin-web/src/views/foundation/store/person.vue new file mode 100644 index 0000000..040a042 --- /dev/null +++ b/admin-web/src/views/foundation/store/person.vue @@ -0,0 +1,215 @@ +<template> + <win-md :title="setting.title" @close="close" :width="'800px'"> + <div class="section-container"> + <div class="section-left"> + <div class="header-row"><span class="title">閫夋嫨浜哄憳锛�</span></div> + <div class="section-body"> + <el-tree ref="tree" :data="treeData" node-key="id" :props="defaultProps" default-expand-all> + <template slot-scope="{ node, data }"> + <div v-if="data.type != 'user'">{{ data.name }}</div> + <div v-else class="leaf-node" :class="data.checked ? 'checked' : ''" @click="handleCheckItem(node, data)"> + {{ data.name }} + </div> + </template> + </el-tree> + </div> + </div> + <div class="section-right"> + <div class="header-row"> + <span class="title">宸查�夛細</span> + <span class="btn" @click="handleClear">娓呯┖</span> + </div> + <div class="section-body"> + <div class="section-item" v-for="(item, index) in selectdSections" :key="index"> + <span class="label">{{ item.name }}</span> + <span class="btn del-btn" @click="handleDel(item)">鍒犻櫎</span> + </div> + </div> + </div> + </div> + <div slot="footer" align="center" class="dialog-footer"> + <my-button name="鍙栨秷" site="form" @click="close" /> + <my-button name="淇濆瓨" site="form" @click="save" /> + </div> + </win-md> +</template> + +<script> +import { departmentListAll } from '@/api/system/deptment'; +import { userSelectDepartment, warehouseManagerAdd, warehouseManagerList } from '@/api/foudation/store'; +import winMd from '@/components/win/win-md'; +import myButton from '@/components/myButton/myButton'; +import * as finsystenant from '@/api/baseSetting/finsystenant'; + +export default { + name: 'person', + components: { winMd, myButton }, + props: { + setting: { + type: Object, + default: () => {}, + }, + }, + data() { + return { + selectdSections: [], + treeData: [], + formData: {}, + defaultProps: { + children: 'children', + label: 'name', + }, + }; + }, + computed: { + checkedKeys() { + return this.selectdSections.map((v) => v.id); + }, + }, + created() { + console.log(this.setting); + if (this.setting.info) { + this.formData = Object.assign({}, JSON.parse(this.setting.info)); + } + this.initTree(); + warehouseManagerList({ warehouseId: this.formData.id }).then((res) => { + console.log(res); + }); + }, + methods: { + initTree() { + userSelectDepartment({ agencyId: this.formData.agencyId }).then((res) => { + this.treeData = [res]; + }); + }, + handleCheckItem(node, data) { + this.selectdSections = []; + this.treeData[0].children.forEach((item, index) => { + if (item.children) { + item.children.forEach((child, childIndex) => { + if (child.id == data.id) { + this.$set(this.treeData[0].children[index].children[childIndex], 'checked', !child.checked); + } + if (child.checked) { + this.selectdSections.push(child); + } + }); + } + }); + console.log(this.treeData); + }, + handleDel(item) { + this.handleCheckItem({}, item); + }, + handleClear() { + this.selectdSections.forEach((item) => { + this.handleCheckItem({}, item); + }); + this.selectdSections = []; + }, + close() { + this.$emit('close'); + }, + save() { + let params = []; + this.selectdSections.forEach((item) => { + params.push({ + managerId: item.id, + managerName: item.name, + baseWarehouseId: this.setting.id, + }); + }); + debugger; + warehouseManagerAdd(params).then((res) => { + if (res) { + this.$message.success('淇濆瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); + } else { + this.$message.error('淇濆瓨澶辫触'); + } + }); + }, + }, +}; +</script> +<style lang="scss" scoped> +.section-container { + height: 400px; + display: flex; + justify-content: space-between; + ::v-deep { + .el-tree-node__expand-icon.is-leaf { + display: none; + } + } +} +.section-left, +.section-right { + width: calc((100% - 20px) / 2); + height: 100%; + border: 1px solid #dcdfe6; + padding: 10px; + box-sizing: border-box; + border-radius: 4px; + overflow-y: auto; +} +.header-row { + display: flex; + align-items: center; + justify-content: space-between; + .title { + color: #3d3d3d; + font-size: 14px; + font-style: normal; + font-weight: 400; + } +} +.section-body { + margin-top: 20px; +} +.section-right { + .btn { + display: inline-block; + width: 44px; + height: 22px; + line-height: 22px; + text-align: center; + flex-shrink: 0; + border-radius: 4px; + color: #0d997c; + border: 1px solid #0d997c; + background: rgba($color: #0d997c, $alpha: 0.1); + cursor: pointer; + } + .del-btn { + color: #f9675b; + border: 1px solid #f9675b; + background: rgba($color: #f9675b, $alpha: 0.1); + } + .section-item { + width: 44%; + margin: 0 auto; + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 10px; + } +} +.leaf-node { + width: 100%; + height: 26px; + line-height: 26px; + padding-left: 10px; + &:hover { + background: #f5f7fa; + } +} +.checked { + width: 100%; + background: #f5f7fa; + height: 26px; + line-height: 26px; + box-sizing: border-box; +} +</style> diff --git a/admin-web/src/views/stock/accessStock/outbound/detail.vue b/admin-web/src/views/stock/accessStock/outbound/detail.vue index 0e6994e..9ad74bf 100644 --- a/admin-web/src/views/stock/accessStock/outbound/detail.vue +++ b/admin-web/src/views/stock/accessStock/outbound/detail.vue @@ -59,7 +59,7 @@ </el-table-column> <el-table-column prop="counts" label="閲戦" align="center"> <template slot-scope="scope"> - {{ (scope.row.price * scope.row.counts).toFixed(2) }} + {{ scope.row.price * scope.row.counts | formatPrice}} </template> </el-table-column> </el-table> @@ -99,6 +99,9 @@ if (!time) return; return DateFormatter.LongToDateTime(time); }, + formatPrice(price) { + return price / 100 + } }, created() { outputDetail({ id: this.setting.id }).then((res) => { diff --git a/admin-web/src/views/stock/accessStock/outbound/edit.vue b/admin-web/src/views/stock/accessStock/outbound/edit.vue index 064fcf2..1521f03 100644 --- a/admin-web/src/views/stock/accessStock/outbound/edit.vue +++ b/admin-web/src/views/stock/accessStock/outbound/edit.vue @@ -1,12 +1,17 @@ <template> - <win-md class="stock-edit" :title="`${setting.title}鍑哄簱鍑哄簱`" @close="close" :width="'800px'"> + <win-md class="stock-edit" :title="`${setting.title}鍑哄簱`" @close="close" :width="'800px'"> <el-form class="form" ref="ruleForm" :model="formData" :rules="rules" label-width="120px"> <div class="main-w"> <el-row :gutter="24" class="headerHeight"> <el-col :span="12"> <el-form-item label="鍑哄簱浠撳簱" prop="warehouseId"> <el-select v-model="formData.warehouseId" placeholder="璇烽�夋嫨" style="width: 100%"> - <el-option v-for="item in warehouseOptions" :key="item.id" :label="item.warehouseName" :value="item.id" /> + <el-option + v-for="item in warehouseOptions" + :key="item.id" + :label="item.warehouseName" + :value="item.id" + /> </el-select> </el-form-item> </el-col> @@ -118,7 +123,7 @@ </template> </el-table-column> <el-table-column prop="price" label="鐜版湁搴撳瓨" align="center"> - <template slot-scope="scope">{{ }} + <template slot-scope="scope"> {{ scope.row.worehouseCount }} </template> </el-table-column> @@ -130,11 +135,11 @@ :prop="`goods[${goodsIndex}].models[${scope.$index}].counts`" :rules="rules.counts" > - <el-input - type="number" - v-model="scope.row.counts" - @change="countsChange($event, goodsIndex,scope.$index)" - ></el-input> + <el-input + type="number" + v-model="scope.row.counts" + @change="countsChange($event, goodsIndex, scope.$index)" + ></el-input> </el-form-item> </template> </el-table-column> @@ -173,17 +178,15 @@ goodsTemplate, goodsModel, selectTenantWarehouse, + warehouseSelectNumber, } from '@/api/baseSetting/finsystenant'; -import { - outputAdd, - outputSelectNumber -} from '@/api/stock/accessStock'; +import { outputAdd } from '@/api/stock/accessStock'; import { getTree } from '@/api/foudation/classification'; import MyButton from '@/components/myButton/myButton'; import winMd from '@/components/win/win-md'; import upload from '@/components/upload/index'; import { getUploadUrl } from '@/utils/base'; -import {mapGetters} from 'vuex' +import { mapGetters } from 'vuex'; export default { components: { MyButton, winMd, upload }, @@ -201,7 +204,7 @@ return callback(new Error('璇烽�夋嫨')); } let temp = this.formData.goods.filter((v) => v.baseGoodsTemplateId == value); - if (!temp || temp.length!=1) { + if (!temp || temp.length != 1) { return callback(new Error('宸查�夎繃姝ょ墿鍝�')); } callback(); @@ -257,8 +260,8 @@ }, }; }, - computed:{ - ...mapGetters(['userInfo']) + computed: { + ...mapGetters(['userInfo']), }, created() { this.init(); @@ -275,10 +278,10 @@ // 鑾峰彇鍑哄簱浠撳簱鍒楄〃 getWarehouseList() { - selectTenantWarehouse({agencyId:this.userInfo.tenantId}) + selectTenantWarehouse({ agencyId: this.userInfo.tenantId }) .then((res) => { - this.warehouseOptions = res - if(res.length) { + this.warehouseOptions = res; + if (res.length) { this.formData.goods.push(JSON.parse(JSON.stringify(this.goodsItem))); } if (this.warehouseOptions.length && !this.formData.warehouseId) { @@ -371,12 +374,18 @@ async modelChange(e, index) { let arr = [...this.formData.goods[index].models]; let str = JSON.stringify(arr); - for(let item of e) { + for (let item of e) { if (str.indexOf(item) == -1) { let temp = this.goodsModelAll.find((v) => v.id == item); // 鑾峰彇搴撳瓨 - let num = await outputSelectNumber({warehouseId:this.formData.warehouseId,baseGoodsModelsId:item}) - arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit,worehouseCount: num}); + let num = await warehouseSelectNumber({ + warehouseId: this.formData.warehouseId, + baseGoodsModelsId: item, + warehouseType: 0, + states: 1, + buyType: null, + }); + arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit, worehouseCount: num }); } } this.formData.goods[index].models = arr; @@ -391,8 +400,8 @@ // 涓婁紶 uploadChange() { - let arr = this.$refs.uploadRef.fileList - this.formData.procureDoc = JSON.stringify(arr) + let arr = this.$refs.uploadRef.fileList; + this.formData.procureDoc = JSON.stringify(arr); }, // 鐐瑰嚮鏂板鐗╁搧 @@ -406,16 +415,16 @@ }, // 鍑哄簱鏁伴噺鏍¢獙 - countsChange(e, goodsIndex,index) { - const curItem = this.formData.goods[goodsIndex].models[index] - const worehouseCount = curItem.worehouseCount + countsChange(e, goodsIndex, index) { + const curItem = this.formData.goods[goodsIndex].models[index]; + const worehouseCount = curItem.worehouseCount; if (e == 0) { this.$message.warning('鏁伴涓嶈兘涓�0'); - curItem.counts = null + curItem.counts = null; } if (e > worehouseCount) { this.$message.warning('鏁伴瓒呰繃鐜版湁搴撳瓨'); - curItem.counts = worehouseCount > 0 ? worehouseCount : null + curItem.counts = worehouseCount > 0 ? worehouseCount : null; } }, @@ -424,16 +433,16 @@ this.$refs['ruleForm'].validate((valid) => { if (valid) { console.log('this.formData', this.formData); - outputAdd(this.formData) - .then((res) => { - this.$message.success('淇濆瓨鎴愬姛锛�'); - this.close(); - this.$emit('search'); - }) - .catch((err) => { - console.log('edit err', err); - this.$message.error('淇濆瓨澶辫触'); - }); + outputAdd(this.formData) + .then((res) => { + this.$message.success('淇濆瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); + }) + .catch((err) => { + console.log('edit err', err); + this.$message.error('淇濆瓨澶辫触'); + }); } else { this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��'); } diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue b/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue index 78b8913..8aa9b05 100644 --- a/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue +++ b/admin-web/src/views/stock/inventorycount/inventorytask/edit.vue @@ -3,26 +3,25 @@ <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px"> <el-form-item label="鐩樼偣鍗曞悕" prop="businessFormName"> <el-input - disabled v-model="formData.businessFormName" clearable maxlength="20" - show-word-limit style="width: 100%" + placeholder="璇疯緭鍏�" /> </el-form-item> - <el-form-item label="鐩樼偣浠撳簱" prop="warehouseName"> + <el-form-item label="鐩樼偣浠撳簱" prop="warehouseId"> <el-select v-model="formData.warehouseId" placeholder="璇烽�夋嫨" style="width: 100%"> <el-option v-for="item in warehouseOptions" :key="item.id" :label="item.warehouseName" :value="item.id" /> </el-select> </el-form-item> - <el-form-item label="鐩樼偣浜�" prop="operatorName"> - <el-select v-model="formData.warehouseId" placeholder="璇烽�夋嫨" style="width: 100%"> + <el-form-item label="鐩樼偣浜�" prop="operatorId"> + <el-select v-model="formData.operatorId" placeholder="璇烽�夋嫨" style="width: 100%"> <el-option v-for="item in operatorOptions" :key="item.id" :label="item.warehouseName" :value="item.id" /> </el-select> </el-form-item> - <el-form-item label="鐩戠洏浜�" prop="operatorName2"> - <el-select v-model="formData.warehouseId" placeholder="璇烽�夋嫨" style="width: 100%"> + <el-form-item label="鐩戠洏浜�" prop="operatorId2"> + <el-select v-model="formData.operatorId2" placeholder="璇烽�夋嫨" style="width: 100%"> <el-option v-for="item in operatorOptions" :key="item.id" :label="item.warehouseName" :value="item.id" /> </el-select> </el-form-item> @@ -46,9 +45,10 @@ <script> import { selectTenantWarehouse } from '@/api/baseSetting/finsystenant'; +import { inventoryAdd, inventoryEdit } from '@/api/stock/inventory'; import winSm from '@/components/win/win-sm'; import myButton from '@/components/myButton/myButton'; -import * as finsystenant from '@/api/baseSetting/finsystenant'; +import {formatDate} from '@/utils/DateFormatter' export default { components: { winSm, myButton }, @@ -64,25 +64,25 @@ checkedList: [], warehouseOptions: [], // 浠撳簱鍒楄〃 operatorOptions:[], - formData: { - code: '', - name: '', - status: true, - summary: '', - }, + formData: {}, rules: { - businessFormName: [{ required: true, message: '璇疯緭鍏ユ満鏋勭紪鍙�', trigger: 'blur' }], - warehouseName: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], - operatorName: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], - operatorName2: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], + businessFormName: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }], + warehouseId: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], + operatorId: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], + operatorId2: [{ required: true, message: '璇烽�夋嫨', trigger: 'blur' }], }, }; }, created() { if (this.setting.info) { this.formData = Object.assign({}, JSON.parse(this.setting.info)); + }else { + this.formData.businessFormName = formatDate(new Date(),'yyyy骞碝M鏈堜唤鐩樼偣') } this.handleSelectTenantWarehouse(); + let temp = + this.formData.operatorId = '1109327915216504' + this.formData.operatorId2 = '10990356630810' }, methods: { // 鑾峰彇浠撳簱鍒楄〃 @@ -101,7 +101,7 @@ const params = Object.assign({}, this.formData); if (this.setting.id) { // 缂栬緫鎺ュ彛 - finsystenant.edit(params).then((res) => { + inventoryEdit(params).then((res) => { if (res) { this.$message.success('淇濆瓨鎴愬姛锛�'); this.close(); @@ -111,8 +111,7 @@ } }); } else { - params.orgId = this.setting.orgId; - finsystenant.add(params).then((res) => { + inventoryAdd(params).then((res) => { if (res) { this.$message.success('淇濆瓨鎴愬姛锛�'); this.close(); diff --git a/admin-web/src/views/stock/inventorycount/inventorytask/index.vue b/admin-web/src/views/stock/inventorycount/inventorytask/index.vue index 2313f2c..a8ce8af 100644 --- a/admin-web/src/views/stock/inventorycount/inventorytask/index.vue +++ b/admin-web/src/views/stock/inventorycount/inventorytask/index.vue @@ -42,6 +42,7 @@ import myImport from '@/views/components/myImport'; import { getBaseUrl } from '@/utils/base'; import { selectTenantWarehouse } from '@/api/baseSetting/finsystenant'; +import {inventoryListApi} from '@/api/stock/inventory' export default { name: 'index', @@ -128,7 +129,7 @@ table: { showIndex: true, // 鏄惁鏄剧ず搴忓彿 expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁 - url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/select/list', // 璇锋眰鍦板潃 + url: SettingIplatform.apiBaseURL + inventoryListApi(), // 璇锋眰鍦板潃 // 宸ュ叿鏉� tools: { columnsCtrl: { diff --git a/admin-web/src/views/stock/procure/purchaseOrder/detail.vue b/admin-web/src/views/stock/procure/purchaseOrder/detail.vue index b5bf873..4dc2ce5 100644 --- a/admin-web/src/views/stock/procure/purchaseOrder/detail.vue +++ b/admin-web/src/views/stock/procure/purchaseOrder/detail.vue @@ -70,7 +70,7 @@ </el-table-column> <el-table-column prop="price" label="鍗曚环" align="center"> <template slot-scope="scope"> - {{ scope.row.price }} + {{ scope.row.price | formatPrice }} </template> </el-table-column> <el-table-column prop="counts" label="鍏ュ簱鏁伴噺" align="center"> @@ -80,7 +80,7 @@ </el-table-column> <el-table-column prop="counts" label="閲戦" align="center"> <template slot-scope="scope"> - {{ (scope.row.price * scope.row.counts).toFixed(2) }} + {{ scope.row.price * scope.row.counts | formatPrice}} </template> </el-table-column> </el-table> @@ -140,6 +140,9 @@ if (!time) return '-'; return DateFormatter.LongToDateTime(time); }, + formatPrice(price) { + return price / 100 + } }, created() { procureDetail({ id: this.setting.id }).then((res) => { @@ -203,10 +206,4 @@ </script> <style lang="scss" scoped> @import url(../../index.scss); -.el-dialog { - z-index: 1100 !important; -} ->>> .el-dialog { - z-index: 1100 !important; -} </style> diff --git a/admin-web/src/views/stock/procure/purchaseOrder/edit.vue b/admin-web/src/views/stock/procure/purchaseOrder/edit.vue index 9ed3d61..7d8cc0c 100644 --- a/admin-web/src/views/stock/procure/purchaseOrder/edit.vue +++ b/admin-web/src/views/stock/procure/purchaseOrder/edit.vue @@ -68,7 +68,7 @@ :rules="rules.baseGoodsTemplateId" > <el-select - v-model="goodsItem.baseGoodsTemplateId" + v-model="goodsItem.baseGoodsTemplateId" placeholder="璇峰厛鎷╃墿鍝佸垎绫�" filterable :disabled="!goodsItem.baseCategoryId" @@ -131,15 +131,19 @@ {{ scope.row.unit }} </template> </el-table-column> - <el-table-column prop="price" label="鍗曚环锛堝厓锛�" align="center"> + <el-table-column prop="priceYuan" label="鍗曚环锛堝厓锛�" align="center"> <template slot-scope="scope"> <el-form-item label-width="0" style="margin-bottom: 0" - :prop="`procureGoods[${goodsIndex}].models[${scope.$index}].price`" - :rules="rules.price" + :prop="`procureGoods[${goodsIndex}].models[${scope.$index}].priceYuan`" + :rules="rules.priceYuan" > - <el-input type="number" v-model.number="scope.row.price"></el-input> + <el-input + type="number" + v-model.number="scope.row.priceYuan" + @change="priceChange($event, goodsIndex, scope.$index)" + ></el-input> </el-form-item> </template> </el-table-column> @@ -218,13 +222,14 @@ return callback(new Error('璇烽�夋嫨')); } let temp = this.formData.procureGoods.filter((v) => v.baseGoodsTemplateId == value); - if (!temp || temp.length!=1) { + if (!temp || temp.length != 1) { return callback(new Error('宸查�夎繃姝ょ墿鍝�')); } callback(); }; // 閲戦鏍¢獙 var checkPrice = (rule, value, callback) => { + console.log(value); if (!value) { return callback(new Error('璇疯緭鍏�')); } @@ -236,7 +241,7 @@ }; // 鏁伴噺鏍¢獙 var checkCounts = (rule, value, callback) => { - console.log(value) + console.log(value); if (!value) { return callback(new Error('璇疯緭鍏�')); } @@ -287,7 +292,8 @@ }, modelsItem: { baseGoodsModelsId: '', // 瑙勬牸鍨嬪彿缂栧彿 - price: null, // 鍗曚环(閲囪喘闇�瑕侊紝璋冩嫧涓嶉渶瑕�) + priceYuan: null, // 鍗曚环(鍏�) + price: null, // 鍗曚环(鍒� 閲囪喘闇�瑕侊紝璋冩嫧涓嶉渶瑕�) counts: null, // 鎿嶄綔鏁伴噺 unit: null, //鍗曚綅 }, @@ -300,7 +306,7 @@ baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], baseGoodsTemplateId: [{ validator: checkGoodsTemplateId, trigger: ['blur', 'change'] }], modelsIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], - price: [{ validator: checkPrice, trigger: 'blur' }], + priceYuan: [{ validator: checkPrice, trigger: 'blur' }], counts: [{ validator: checkCounts, trigger: 'blur' }], }, @@ -349,6 +355,9 @@ ); this.getgoodsTemplate(item.baseCategoryId, index); this.getgoodsModel(item.baseGoodsTemplateId, index); + item.models.forEach((child, childIndex) => { + this.$set(this.formData.procureGoods[index].models[childIndex], 'priceYuan', child.price / 100); + }); return item; }); } @@ -468,6 +477,11 @@ this.formData.procureGoods[index].models.splice(delIndex, 1); }, + // 浠锋牸input鐩戝惉 杞负鍒� + priceChange(e, goodsIndex, index) { + this.formData.procureGoods[goodsIndex].models[index].price = e * 100; + }, + // 涓婁紶 uploadChange() { let arr = this.$refs.uploadRef.fileList; @@ -488,7 +502,8 @@ handleSubmit() { this.$refs['ruleForm'].validate((valid) => { if (valid) { - console.log('this.formData', this.formData); + console.log('formData', this.formData); + debugger; if (!this.setting.id) { procureAdd(this.formData) .then((res) => { diff --git a/admin-web/src/views/stock/procure/receiptDetails/edit.vue b/admin-web/src/views/stock/procure/receiptDetails/edit.vue deleted file mode 100644 index 37b0db9..0000000 --- a/admin-web/src/views/stock/procure/receiptDetails/edit.vue +++ /dev/null @@ -1,111 +0,0 @@ -<template> - <win-sm :title="setting.title" @close="close" :width="'800px'"> - <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px"> - <el-form-item label="缂栧彿" prop="code"> - <el-input disabled v-model="formData.code" clearable maxlength="20" show-word-limit style="width: 100%"/> - </el-form-item> - <el-form-item label="浠撳簱鍚嶇О" prop="name"> - <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%"/> - </el-form-item> - <el-form-item label="鍦板潃" > - <el-input v-model="formData.adss" clearable maxlength="20" show-word-limit style="width: 100%"/> - </el-form-item> - <el-form-item label="鐘舵��" prop="status"> - <el-switch - v-model="formData.status" - active-color="#0d997c" - inactive-color="#C0CCDA"> - </el-switch> - </el-form-item> - </el-form> - <div slot="footer" align="center" class="dialog-footer"> - <my-button name="鍙栨秷" site="form" @click="close"/> - <my-button name="淇濆瓨" site="form" @click="save"/> - </div> - </win-sm> -</template> - -<script> -import winSm from '@/components/win/win-sm' -import myButton from '@/components/myButton/myButton' -import * as finsystenant from '@/api/baseSetting/finsystenant' - -export default { - components: {winSm, myButton}, - props: { - setting: { - type: Object, - default: () => { - } - } - }, - data() { - return { - checkAll: false, - checkedList: [], - formData: { - code: '', - name: '', - status: true, - summary: '', - }, - rules: { - code: [ - {required: true, message: '璇疯緭鍏ユ満鏋勭紪鍙�', trigger: 'blur'} - ], - name: [ - {required: true, message: '璇疯緭鍏ユ満鏋勫悕绉�', trigger: 'blur'} - ], - status: [ - {required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'blur'} - ] - } - } - }, - created() { - if(this.setting.info){ - this.formData = Object.assign({},JSON.parse(this.setting.info)) - } - }, - methods: { - getEditInfo(id){ - - }, - close() { - this.$emit('close') - }, - save() { - this.$refs.ruleForm.validate((valid) => { - if (valid) { - const params = Object.assign({}, this.formData) - if(this.setting.id){ - // 缂栬緫鎺ュ彛 - finsystenant.edit(params).then(res => { - if (res) { - this.$message.success('淇濆瓨鎴愬姛锛�') - this.close() - this.$emit('search') - } else { - this.$message.error('淇濆瓨澶辫触') - } - }) - }else{ - params.orgId = this.setting.orgId - finsystenant.add(params).then(res => { - if (res) { - this.$message.success('淇濆瓨鎴愬姛锛�') - this.close() - this.$emit('search') - } else { - this.$message.error('淇濆瓨澶辫触') - } - }) - } - } else { - this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��') - } - }) - } - } -} -</script> diff --git a/admin-web/src/views/stock/procure/receiptDetails/index.vue b/admin-web/src/views/stock/procure/receiptDetails/index.vue index acb87e4..7f80beb 100644 --- a/admin-web/src/views/stock/procure/receiptDetails/index.vue +++ b/admin-web/src/views/stock/procure/receiptDetails/index.vue @@ -33,7 +33,7 @@ import SettingIplatform from '@/utils/settingIplatform'; import detail from '../purchaseOrder/detail'; import * as finsystenant from '@/api/baseSetting/finsystenant'; -import {goodsModel} from '@/api/stock/procure/purchaseOrder'; +import { goodsModel } from '@/api/stock/procure/purchaseOrder'; import myImport from '@/views/components/myImport'; import { getBaseUrl } from '@/utils/base'; @@ -64,7 +64,7 @@ label: '瑙勬牸鍨嬪彿', placeholder: '璇烽�夋嫨', defaultValue: '', - options:[] + options: [], }, { type: 'cascader', @@ -100,7 +100,7 @@ // 鎼滅储鏉′欢 filterFrom: { tenantId: null, - agencyId:[], + agencyId: [], status: 1, }, // 瀵煎叆 @@ -150,9 +150,23 @@ { title: '鍗曞彿', field: 'businessFormCode', align: 'center' }, { title: '鐗╁搧鍚嶇О', field: 'goodsTemplateName', align: 'center' }, { title: '瑙勬牸鍨嬪彿', field: 'baseGoodsModelsName', align: 'center' }, - { title: '鍗曚环', field: 'price', align: 'center' }, + { + title: '鍗曚环', + field: 'price', + align: 'center', + formatter: (row) => { + return { value: row.price / 100 }; + }, + }, { title: '鍏ュ簱鏁伴噺', field: 'counts', align: 'center' }, - { title: '閲戦', field: 'amount', align: 'center' }, + { + title: '閲戦', + field: 'amount', + align: 'center', + formatter: (row) => { + return { value: row.price / 100 }; + }, + }, { title: '鎵�灞炴満鏋�', field: 'agencyName', align: 'center' }, { title: '鍒涘缓浜�', field: 'buyerName', align: 'center' }, { @@ -193,17 +207,16 @@ }, created() { // 鎼滅储妗嗚鏍煎瀷鍙� - goodsModel().then(res=>{ - this.items.forEach(v=>{ - if(v.label=='瑙勬牸鍨嬪彿'){ - v.options = res.map(item=>{ - item.label = item.modelName, - item.value = item.id - return item - }) + goodsModel().then((res) => { + this.items.forEach((v) => { + if (v.label == '瑙勬牸鍨嬪彿') { + v.options = res.map((item) => { + (item.label = item.modelName), (item.value = item.id); + return item; + }); } - }) - }) + }); + }); }, methods: { //瀵煎叆 @@ -247,9 +260,9 @@ .catch(() => {}); }, showDetail(row) { - this.detailSetting.id=row.businessId - this.detailSetting.title='璇︽儏' - this.detailSetting.show=true + this.detailSetting.id = row.businessId; + this.detailSetting.title = '璇︽儏'; + this.detailSetting.show = true; }, // 鏌ヨtable鍒楄〃 search(pageNum) { @@ -267,7 +280,7 @@ if (this.filterFrom.incomeTimeEnd) { this.filterFrom.incomeTimeEnd = this.filterFrom.incomeTimeEnd.replace(/\-/g, ''); } - if (params.agencyId&¶ms.agencyId.length) { + if (params.agencyId && params.agencyId.length) { this.filterFrom.agencyId = params.agencyId[params.agencyId.length - 1]; } this.search(1); diff --git a/admin-web/src/views/stock/scrap/itemScrapping/detail.vue b/admin-web/src/views/stock/scrap/itemScrapping/detail.vue index f8efa9f..c6b0a1e 100644 --- a/admin-web/src/views/stock/scrap/itemScrapping/detail.vue +++ b/admin-web/src/views/stock/scrap/itemScrapping/detail.vue @@ -203,10 +203,4 @@ </script> <style lang="scss" scoped> @import url(../../index.scss); -.el-dialog { - z-index: 1100 !important; -} ->>> .el-dialog { - z-index: 1100 !important; -} </style> diff --git a/admin-web/src/views/stock/transfer/transferApplication/edit.vue b/admin-web/src/views/stock/transfer/transferApplication/edit.vue index a990b13..e09140b 100644 --- a/admin-web/src/views/stock/transfer/transferApplication/edit.vue +++ b/admin-web/src/views/stock/transfer/transferApplication/edit.vue @@ -174,8 +174,8 @@ </template> <script> import { transferAdd } from '@/api/stock/transfer'; -import { getCategorySelectTree, getTree, goodsTemplate, goodsModel } from '@/api/baseSetting/finsystenant'; -import { getParentTenant,queryWarehouseGoods } from '@/api/stock/transfer'; +import { getCategorySelectTree, goodsModel, warehouseSelectNumber } from '@/api/baseSetting/finsystenant'; +import { getParentTenant, queryWarehouseGoods } from '@/api/stock/transfer'; import MyButton from '@/components/myButton/myButton'; import winMd from '@/components/win/win-md'; import upload from '@/components/upload/index'; @@ -219,7 +219,7 @@ unit: null, //鍗曚綅 }, rules: { - warehouseId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], + outAgencyId: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], createTime: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], baseCategoryIds: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }], @@ -256,14 +256,18 @@ this.getgoodsTemplate(); this.getgoodsModel(); this.getCategoryTree(); - this.formData.transferGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); }, // 鑾峰彇涓婄骇鏈烘瀯 handegetParentTenant() { getParentTenant().then((res) => { - this.agencyOptions = [res]; - this.formData.outAgencyId = res.id; + if (res.id != this.userInfo.tenantId) { + this.agencyOptions = [res]; + this.formData.outAgencyId = res.id; + this.formData.transferGoods.push(JSON.parse(JSON.stringify(this.goodsItem))); + }else{ + this.$message.warning('鏃犱笂绾ф満鏋�') + } }); }, @@ -340,12 +344,12 @@ // 鐗╁搧鍚嶇О鍒楄〃閫夋嫨 goodsTemplateChange(e, index) { - let temp = this.formData.transferGoods.find(v=>v.baseGoodsTemplateId==e) - if(temp) { - this.$message.warning('宸查�夎繃姝ょ墿鍝�') - return - }else{ - this.formData.transferGoods[index].baseGoodsTemplateId = e + let temp = this.formData.transferGoods.find((v) => v.baseGoodsTemplateId == e); + if (temp) { + this.$message.warning('宸查�夎繃姝ょ墿鍝�'); + return; + } else { + this.formData.transferGoods[index].baseGoodsTemplateId = e; } this.formData.transferGoods[index].modelsOptions = []; this.formData.transferGoods[index].modelsIds = []; @@ -357,15 +361,22 @@ }, // 瑙勬牸鍨嬪彿閫夋嫨 - modelChange(e, index) { + async modelChange(e, index) { let arr = [...this.formData.transferGoods[index].models]; let str = JSON.stringify(arr); - e.forEach((item) => { + for (let item of e) { if (str.indexOf(item) == -1) { let temp = this.goodsModelAll.find((v) => v.id == item); - arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit }); + let num = await warehouseSelectNumber({ + baseGoodsModelsId: item, + warehouseType: 0, + states: 1, + buyType: 1, + agencyId: this.formData.outAgencyId, + }); + arr.push({ ...this.modelsItem, baseGoodsModelsId: item, unit: temp.unit, worehouseCount: num }); } - }); + } this.formData.transferGoods[index].models = arr; }, @@ -395,9 +406,9 @@ countsChange(e, goodsIndex, index) { const curItem = this.formData.transferGoods[goodsIndex].models[index]; const worehouseCount = curItem.worehouseCount; - if(e==0) { + if (e == 0) { this.$message.warning('鏁伴噺涓嶈兘涓�0'); - curItem.counts = null + curItem.counts = null; } if (e > worehouseCount) { this.$message.warning('鏁伴噺瓒呰繃鐜版湁搴撳瓨'); @@ -427,11 +438,6 @@ }, close() { - this.formData = { - warehouseId: '', // 璋冩嫧浠撳簱id - procureTime: '', // 璋冩嫧鏃堕棿 - transferGoods: [], - }; this.$emit('close'); }, }, diff --git a/admin-web/src/views/stock/transfer/transferApplication/index.vue b/admin-web/src/views/stock/transfer/transferApplication/index.vue index 64f853c..4c6cfec 100644 --- a/admin-web/src/views/stock/transfer/transferApplication/index.vue +++ b/admin-web/src/views/stock/transfer/transferApplication/index.vue @@ -62,9 +62,7 @@ <div class="box"> <span class="span-two">鐢宠璋冩嫧鏃堕棿锛�</span>{{ item.createTime | formatTime }} </div> - <div class="box"> - <span class="span-two">鎺ユ敹鏃堕棿锛�</span>{{ item.inTime | formatTime }} - </div> + <div class="box"><span class="span-two">鎺ユ敹鏃堕棿锛�</span>{{ item.inTime | formatTime }}</div> </div> <div class="one-hed"> <div class="box"><span class="span-two">璋冩嫧鏈烘瀯锛�</span>{{ item.outAgencyName }}</div> @@ -158,24 +156,6 @@ defaultValue: '', }, { - type: 'cascader', - dataIndex: 'outAgencyId', - label: '璋冩嫧鏈烘瀯', - placeholder: '璇烽�夋嫨', - optionsConfig: { url: commonsApi.cascader_tree_fin_tenant, props: null }, - defaultValue: '', - options: [], - }, - { - type: 'cascader', - dataIndex: 'inAgencyId', - label: '鎺ユ敹鏈烘瀯', - placeholder: '璇烽�夋嫨', - optionsConfig: { url: commonsApi.cascader_tree_fin_tenant, props: null }, - defaultValue: '', - options: [], - }, - { type: 'select', dataIndex: 'states', label: '鐘舵��', @@ -208,14 +188,13 @@ defaultValue: '', }, ], - filterFrom:{ - } + filterFrom: {}, }; }, created() { this.filterFrom = { - operatorId:this.userInfo.id - } + inAgencyId: this.userInfo.tenantId, + }; this.fetchData(); this.items.map((v) => { if (v.label == '鐘舵��') { @@ -238,33 +217,29 @@ console.log(this.list); }); }, - + // 鍏ュ簱 handleIncome(row) { this.$confirm(`鎮ㄧ‘瀹� 鍗曞彿锛�${row.businessFormCode} 璋冩嫧鍑哄簱鍚�?`, '璋冩嫧鍑哄簱').then(() => { - transfeIncome({ id: row.id }) - .then((res) => { - this.$message.success('璋冩嫧鍑哄簱鎴愬姛锛�'); - this.search(1); - }) + transfeIncome({ id: row.id }).then((res) => { + this.$message.success('璋冩嫧鍑哄簱鎴愬姛锛�'); + this.search(1); + }); }); }, // 瀵煎嚭 handleExport(row) { - transferExport({id:row.id}).then(res=>{ - - }) + transferExport({ id: row.id }).then((res) => {}); }, // 鎾ら攢 handleRevoke(row) { this.$confirm(`鎮ㄧ‘瀹氭挙閿�鍗曞彿涓�"${row.businessFormCode}" 鐨勬暟鎹悧?`, '鎾ら攢').then(() => { - transferUpdStatus({ id: row.id }) - .then((res) => { - this.$message.success('鎾ら攢鎴愬姛锛�'); - this.search(1); - }) + transferUpdStatus({ id: row.id }).then((res) => { + this.$message.success('鎾ら攢鎴愬姛锛�'); + this.search(1); + }); }); }, fifterForm(params) { diff --git a/admin-web/src/views/stock/transfer/transferissue/index.vue b/admin-web/src/views/stock/transfer/transferissue/index.vue index 26aa693..f3f2404 100644 --- a/admin-web/src/views/stock/transfer/transferissue/index.vue +++ b/admin-web/src/views/stock/transfer/transferissue/index.vue @@ -145,15 +145,6 @@ }, { type: 'cascader', - dataIndex: 'outAgencyId', - label: '璋冩嫧鏈烘瀯', - placeholder: '璇烽�夋嫨', - optionsConfig: { url: commonsApi.cascader_tree_fin_tenant, props: null }, - defaultValue: '', - options: [], - }, - { - type: 'cascader', dataIndex: 'inAgencyId', label: '鎺ユ敹鏈烘瀯', placeholder: '璇烽�夋嫨', @@ -197,6 +188,9 @@ }; }, created() { + this.filterFrom = { + outAgencyId: this.userInfo.tenantId, + }; this.fetchData(); this.items.map((v) => { if (v.label == '鐘舵��') { diff --git a/admin-web/src/views/systemManger/server/user/edit.vue b/admin-web/src/views/systemManger/server/user/edit.vue index 840efc6..14efd94 100644 --- a/admin-web/src/views/systemManger/server/user/edit.vue +++ b/admin-web/src/views/systemManger/server/user/edit.vue @@ -11,6 +11,11 @@ <el-form-item label="褰撳墠鏈烘瀯"> <el-input v-model="setting.tenantName" disabled style="width: 250px"/> </el-form-item> + <el-form-item label="閮ㄩ棬" prop="sysDeptId"> + <el-select v-model="formData.sysDeptId"> + <el-option v-for="(item,index) in deptmentOptions" :key="index" :label="item.name" :value="item.id"></el-option> + </el-select> + </el-form-item> <el-form-item label="浜哄憳濮撳悕" prop="userName"> <el-input v-model="formData.userName" clearable maxlength="20" show-word-limit style="width: 250px"/> </el-form-item> @@ -66,6 +71,7 @@ import * as DateFormatter from '@/utils/DateFormatter' import * as role from "@/api/system/role"; import * as user from "@/api/user"; + import {departmentListAll} from "@/api/system/deptment"; export default { components: {winSm, myButton}, @@ -103,6 +109,7 @@ label: 'name', }, formData: { + sysDeptId:'', userName: '', userCode: '', userPhone: '', @@ -112,6 +119,9 @@ seq: null, }, rules: { + sysDeptId: [ + {required: true, message: '璇疯緭鍏�', trigger: 'blur'} + ], userName: [ {required: true, message: '璇疯緭鍏ヤ汉鍛樺鍚�', trigger: 'blur'} ], @@ -133,6 +143,7 @@ created() { this.getInfo() this.getAllRole() + this.getDeptmentOptions() }, methods: { // 鑾峰彇鎵�鏈夎鑹� @@ -158,6 +169,11 @@ } ); }, + getDeptmentOptions(){ + departmentListAll({tenantId:this.setting.tenantId}).then(res=>{ + this.deptmentOptions = res + }) + }, handleCheckAllChange(val) { if (val) { this.checkedList = this.roleOptions.map(x => { diff --git a/admin-web/src/views/systemManger/server/user/index.vue b/admin-web/src/views/systemManger/server/user/index.vue index 44b94d6..c562be2 100644 --- a/admin-web/src/views/systemManger/server/user/index.vue +++ b/admin-web/src/views/systemManger/server/user/index.vue @@ -111,7 +111,7 @@ { title: '鐢ㄦ埛濮撳悕', field: 'userName', align: 'left' }, { title: '鐧诲綍鍚�', field: 'userPhone', align: 'center' }, { title: '鎵�灞炴満鏋�', field: 'userPhone', align: 'center', width: 150 }, - { title: '閮ㄩ棬', field: 'userPhone', align: 'center' }, + { title: '閮ㄩ棬', field: 'sysDeptName', align: 'center' }, { field: 'status', title: '鐘舵��', diff --git a/admin-web/src/views/systemSetting/department/edit.vue b/admin-web/src/views/systemSetting/department/edit.vue new file mode 100644 index 0000000..4e2b1b4 --- /dev/null +++ b/admin-web/src/views/systemSetting/department/edit.vue @@ -0,0 +1,136 @@ +<template> + <win-sm :title="setting.title" @close="close"> + <el-form ref="ruleForm" :model="formData" :rules="rules" class="demo-ruleForm" label-width="100px"> + <el-form-item label="鎵�灞炴満鏋�" prop="tenantIds"> + <el-cascader + v-model="formData.tenantIds" + disabled + :options="treeList" + :props="{ checkStrictly: true,value: 'id' }" + style="width: 100%" + ></el-cascader> + </el-form-item> + <el-form-item label="閮ㄩ棬鍚嶇О" prop="name"> + <el-input v-model="formData.name" clearable maxlength="20" show-word-limit style="width: 100%" /> + </el-form-item> + <el-form-item label="缂栧彿" prop="code"> + <el-input v-model="formData.code" clearable maxlength="20" show-word-limit style="width: 100%" /> + </el-form-item> + <el-form-item label="鐘舵��" prop="status"> + <el-radio-group v-model="formData.status"> + <el-radio :label="0">姝e父</el-radio> + <el-radio :label="1">绂佺敤</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="椤哄簭" prop="orderNum"> + <el-input-number v-model="formData.orderNum" controls-position="right" :min="0" /> + </el-form-item> + <el-form-item label="澶囨敞" prop="summary"> + <el-input + type="textarea" + v-model="formData.summary" + clearable + maxlength="20" + show-word-limit + style="width: 100%" + /> + </el-form-item> + </el-form> + <div slot="footer" align="center" class="dialog-footer"> + <my-button name="鍙栨秷" site="form" @click="close" /> + <my-button name="淇濆瓨" site="form" @click="save" /> + </div> + </win-sm> +</template> + +<script> +import { departmentAdd, departmentEdit, departmentDetail } from '@/api/system/deptment'; +import winSm from '@/components/win/win-sm'; +import myButton from '@/components/myButton/myButton'; +import * as finsystenant from '@/api/baseSetting/finsystenant'; +import { findParentIds } from '@/utils/index'; +import { mapGetters } from 'vuex'; + +export default { + components: { winSm, myButton }, + props: { + setting: { + type: Object, + default: () => {}, + }, + }, + data() { + return { + treeList: [], + formData: { + tenantIds:[], + tenantId:'', + name:'', + code:'', + status:0, + orderNum:1 + }, + rules: { + name: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }], + code: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }], + }, + }; + }, + created() { + console.log(this.setting) + if (this.setting.info) { + departmentDetail({id:this.setting.id}).then(res=>{ + this.formData = res + }) + } else { + this.formData.tenantId = this.setting.tenantId; + } + this.tree_List(); + }, + methods: { + tree_List() { + finsystenant.getTree().then((res) => { + if (res) { + this.treeList = res; + this.$set(this.formData, 'tenantIds', findParentIds(this.treeList, this.formData.tenantId)); + console.log(this.formData) + } + }); + }, + close() { + this.$emit('close'); + }, + save() { + this.$refs.ruleForm.validate((valid) => { + if (valid) { + const params = Object.assign({}, this.formData); + if (this.setting.id) { + // 缂栬緫鎺ュ彛 + departmentEdit(params).then((res) => { + if (res) { + this.$message.success('淇濆瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); + } else { + this.$message.error('淇濆瓨澶辫触'); + } + }); + } else { + departmentAdd(params).then((res) => { + if (res) { + this.$message.success('淇濆瓨鎴愬姛锛�'); + this.close(); + this.$emit('search'); + } else { + this.$message.error('淇濆瓨澶辫触'); + } + }); + } + } else { + this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��'); + } + }); + }, + }, +}; +</script> diff --git a/admin-web/src/views/systemSetting/department/index.vue b/admin-web/src/views/systemSetting/department/index.vue index f4e556c..9544286 100644 --- a/admin-web/src/views/systemSetting/department/index.vue +++ b/admin-web/src/views/systemSetting/department/index.vue @@ -2,88 +2,14 @@ <div class="app-container"> <!--宸︿晶鏍戝舰寮�濮�--> <el-col :span="5"> - <el-card class="box-card" shadow="never"> - <my-tree ref="searchTree" :tree-list="treeDataList" @setNode="nodeClick" @search="search"></my-tree> - </el-card> - </el-col> - <!--宸︿晶鏍戝舰缁撴潫--> - <!--鍙充晶鍒楄〃寮�濮�--> + <el-card class="box-card" shadow="never"> + <my-tree ref="searchTree" :tree-list="treeDataList" @setNode="nodeClick" @search="search"></my-tree> + </el-card> + </el-col> + <!--宸︿晶鏍戝舰缁撴潫--> + <!--鍙充晶鍒楄〃寮�濮�--> <el-container> <el-card class="box-card" style="width: 100%" shadow="never"> -<!-- <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">--> -<!-- <el-form-item label="瀛楀吀鍚嶇О" prop="dictName">--> -<!-- <el-input--> -<!-- v-model="queryParams.dictName"--> -<!-- placeholder="璇疯緭鍏�"--> -<!-- clearable--> -<!-- style="width: 150px"--> -<!-- @keyup.enter.native="handleQuery"--> -<!-- />--> -<!-- </el-form-item>--> -<!-- <el-form-item label="鐘舵��" prop="status">--> -<!-- <el-select--> -<!-- v-model="queryParams.status"--> -<!-- placeholder="璇烽�夋嫨"--> -<!-- clearable--> -<!-- style="width: 150px"--> -<!-- >--> -<!-- <el-option--> -<!-- v-for="item in constants.normalOrDisabled"--> -<!-- :key="item.value"--> -<!-- :label="item.label"--> -<!-- :value="item.value"--> -<!-- />--> -<!-- </el-select>--> -<!-- </el-form-item>--> -<!-- <el-form-item>--> -<!-- <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鏌ヨ</el-button>--> -<!-- <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>--> -<!-- </el-form-item>--> -<!-- </el-form>--> -<!-- <el-table v-loading="loading" :data="typeList" @selection-change="handleSelectionChange">--> -<!-- <el-table-column type="selection" width="55" align="center" />--> -<!-- <el-table-column label="瀛楀吀缂栧彿" align="center" prop="dict_id" />--> -<!-- <el-table-column label="瀛楀吀鍚嶇О" align="center" prop="dict_name" :show-overflow-tooltip="true" />--> -<!-- <el-table-column label="瀛楀吀绫诲瀷" align="center" :show-overflow-tooltip="true">--> -<!-- <template slot-scope="scope">--> -<!-- <router-link :to="'/systemSetting/dictdata/data/' + scope.row.dict_id" class="link-type">--> -<!-- <span>{{ scope.row.dict_type }}</span>--> -<!-- </router-link>--> -<!-- </template>--> -<!-- </el-table-column>--> -<!-- <el-table-column label="鐘舵��" align="center" prop="status">--> -<!-- <template slot-scope="scope">--> -<!-- <span>{{ scope.row.status == 0? '姝e父':'绂佺敤' }}</span>--> -<!-- </template>--> -<!-- </el-table-column>--> -<!-- <el-table-column label="澶囨敞" align="center" prop="remark" :show-overflow-tooltip="true" />--> -<!-- <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="create_time" width="180">--> -<!-- <template slot-scope="scope">--> -<!-- <span>{{ dateTo(scope.row.create_time) }}</span>--> -<!-- </template>--> -<!-- <!– <template slot-scope="scope">–>--> -<!-- <!– <span>{{ parseTime(scope.row.create_time) }}</span>–>--> -<!-- <!– </template>–>--> -<!-- </el-table-column>--> -<!-- <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="180">--> -<!-- <template slot-scope="scope">--> -<!-- <el-button--> -<!-- size="mini"--> -<!-- type="text"--> -<!-- icon="el-icon-edit"--> -<!-- @click="handleUpdate(scope.row)"--> -<!-- v-hasPermi="['system:dict:edit']"--> -<!-- >淇敼</el-button>--> -<!-- <!– <el-button--> -<!-- size="mini"--> -<!-- type="text"--> -<!-- icon="el-icon-delete"--> -<!-- @click="handleDelete(scope.row)"--> -<!-- v-hasPermi="['system:dict:remove']"--> -<!-- >鍒犻櫎</el-button>–>--> -<!-- </template>--> -<!-- </el-table-column>--> -<!-- </el-table>--> <!--鎼滅储鏉′欢--> <div class="filter-container"> <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search> @@ -91,52 +17,28 @@ <el-row style="margin-top: 8px"> <el-col> <!--鍒楄〃--> - <my-table-v2 ref="myTable" :filter="queryParams" :table="table"/> + <my-table-v2 ref="myTable" :filter="filterFrom" :table="table" /> </el-col> </el-row> </el-card> </el-container> <!-- 娣诲姞鎴栦慨鏀瑰弬鏁伴厤缃璇濇 --> - <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> - <el-form ref="form" :model="form" :rules="rules" label-width="80px"> - <el-form-item label="瀛楀吀鍚嶇О" prop="dictName"> - <el-input v-model="form.dictName" placeholder="璇疯緭鍏ュ瓧鍏稿悕绉�" /> - </el-form-item> - <el-form-item label="瀛楀吀绫诲瀷" prop="dictType"> - <el-input v-model="form.dictType" placeholder="璇疯緭鍏ュ瓧鍏哥被鍨�" /> - </el-form-item> - <el-form-item label="鐘舵��" prop="status"> - <el-radio-group v-model="form.status"> - <el-radio - v-for="item in constants.normalOrDisabled" - :key="item.value" - :label="item.value" - >{{item.label}}</el-radio> - </el-radio-group> - </el-form-item> - <el-form-item label="澶囨敞" prop="remark"> - <el-input v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�"></el-input> - </el-form-item> - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> - <el-button @click="cancel">鍙� 娑�</el-button> - </div> - </el-dialog> + + <edit v-if="editSetting.show" :setting="editSetting" @close="editSetting.show = false" @search="search()" /> </div> </template> <script> import myTree from '@/components/myTree/index'; -import { listType, getType, delType, addType, updateType, refreshCache } from "@/api/system/dict/type"; -import * as DateFormatter from "@/utils/DateFormatter"; -import MyTableV2 from "@/components/myTable/myTableV2"; +import { listType, getType, delType, addType, updateType, refreshCache } from '@/api/system/dict/type'; +import * as DateFormatter from '@/utils/DateFormatter'; +import MyTableV2 from '@/components/myTable/myTableV2'; import SettingIplatform from '@/utils/settingIplatform'; -import items from './items' +import edit from './edit'; import * as finsystenant from '@/api/baseSetting/finsystenant'; export default { - name: "Dict", - components: { MyTableV2, myTree }, + name: 'Dict', + components: { MyTableV2, myTree, edit }, data() { return { // 鏍戞暟鎹� @@ -157,75 +59,103 @@ // 瀛楀吀琛ㄦ牸鏁版嵁 typeList: [], // 寮瑰嚭灞傛爣棰� - title: "", + title: '', // 鏄惁鏄剧ず寮瑰嚭灞� open: false, // 鏃ユ湡鑼冨洿 dateRange: [], - // 鏌ヨ鍙傛暟 - queryParams: { - dictName: undefined, - dictType: undefined, - status: 0 + editSetting: { + title: '', + id: '', + show: false, }, - items:items, + filterFrom: {}, + items: [ + { + type: 'text', + dataIndex: 'name', + label: '閮ㄩ棬鍚嶇О', + placeholder: '璇疯緭鍏�', + defaultValue: '', + }, + { + type: 'text', + dataIndex: 'code', + label: '缂栧彿', + placeholder: '璇疯緭鍏�', + defaultValue: '', + }, + { + type: 'select', + dataIndex: 'status', + label: '鐘舵��', + placeholder: '璇烽�夋嫨', + defaultValue: '0', + options: [ + { + value: '0', + label: '鍚敤', + }, + { + value: '1', + label: '绂佺敤', + }, + ], + }, + ], table: { showIndex: true, // 鏄惁鏄剧ず搴忓彿 expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁 - url: SettingIplatform.apiBaseURL + '/system/dict/type/list', // 璇锋眰鍦板潃 + url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/department/list', // 璇锋眰鍦板潃 // 宸ュ叿鏉� tools: { - columnsCtrl: {// 鍒楁帶鍒舵寜閽� - show: false + columnsCtrl: { + // 鍒楁帶鍒舵寜閽� + show: false, }, - generalExport: {// 閫氱敤瀵煎嚭鎸夐挳 - show: false + generalExport: { + // 閫氱敤瀵煎嚭鎸夐挳 + show: false, }, // 鑷畾涔夊伐鍏锋潯鎸夐挳 custom: [ - { + { name: '鏂板', click: () => { - this.showAdd(null); + this.handleAdd(null); }, }, - ] + ], }, // 鍒椾俊鎭� columns: [ - {title: '缂栧彿', field: 'dict_id', align: 'center', width: '100px'}, - {title: '閮ㄩ棬', field: 'dict_name', align: 'left'}, - {title: '椤哄簭鍙�', field: 'dict_name', align: 'left'}, - {title: '澶囨敞', field: 'remark', align: 'left', width: '200px'}, + { title: '缂栧彿', field: 'code', align: 'center', width: '100px' }, + { title: '閮ㄩ棬', field: 'name', align: 'left' }, + { title: '椤哄簭鍙�', field: 'orderNum', align: 'left' }, + { title: '澶囨敞', field: 'remark', align: 'left', width: '200px' }, { - title: '鐘舵��', field: 'status', align: 'center', width: '180px', - formatter: row => { - return { value: row.status=== 0? '鍚敤':'绂佺敤' } - } + title: '鐘舵��', + field: 'status', + align: 'center', + width: '180px', + formatter: (row) => { + return { value: row.status === 0 ? '鍚敤' : '绂佺敤' }; + }, }, ], // 鎿嶄綔淇℃伅 operation: { - // width: 150, + width: 150, align: 'center', - show: false, // 鏄剧ず鎿嶄綔鍒� + show: true, // 鏄剧ず鎿嶄綔鍒� attr: [ - // 鍒嗙被涓嬫湁姝e湪杩涜涓殑椤圭洰鏃讹紝缁欏嚭鎻愮ず涓嶅厑璁哥鐢ㄥ拰鍒犻櫎銆備笖绂佺敤涓�绾у垎绫诲墠闇�瑕佸厛绂佺敤涓嬮潰鐨勬墍鏈変簩绾э紝鏈夊惎鐢ㄧ殑浜岀骇鏃朵笉鍏佽绂佺敤涓�绾� { - // checkPermission:'system:role:edit', - title: '淇敼', - events: row => { - this.handleUpdate(row) - } + title: '缂栬緫', + events: (row) => { + this.showEdit(row); + }, }, - // { - // // checkPermission: 'system:role:remove', - // title: '鍒犻櫎', - // events: row => { - // this.handleDelete(row) - // } - // }, - ] + ], }, paging: { show: true, // 鏄剧ず鍒嗛〉 @@ -234,25 +164,14 @@ small: false, pageNum: 1, pageSize: 10, - total: 0 - } - } + total: 0, + }, + }, }, - // 琛ㄥ崟鍙傛暟 - form: {}, - // 琛ㄥ崟鏍¢獙 - rules: { - dictName: [ - { required: true, message: "瀛楀吀鍚嶇О涓嶈兘涓虹┖", trigger: "blur" } - ], - dictType: [ - { required: true, message: "瀛楀吀绫诲瀷涓嶈兘涓虹┖", trigger: "blur" } - ] - } }; }, created() { - this.initTreeData() + this.initTreeData(); }, methods: { // 宸︿晶鏍戝垵濮嬪寲 @@ -269,137 +188,53 @@ }); }, nodeClick(param) { - console.log(param,'param'); - this.search(1) + console.log(param, 'param'); + this.p = Object.assign( + {}, + { + id: param.id, + name: param.name, + }, + ); + if (this.p.id) { + this.filterFrom.tenantId = this.p.id; + this.editSetting.tenantId = this.p.id; + } else { + this.filterFrom.tenantId = null; + this.editSetting.tenantId = null; + } + this.search(1); }, fifterForm(params) { - this.queryParams = Object.assign(this.queryParams, params) - this.search(1) + this.filterFrom = Object.assign(this.filterFrom, params); + this.search(1); }, // 鏌ヨtable鍒楄〃 search(pageNum) { if (pageNum != undefined) { - this.$refs.myTable.search(pageNum) + this.$refs.myTable.search(pageNum); } else { - this.$refs.myTable.search() + this.$refs.myTable.search(); } - }, - dateTo(val) { - return DateFormatter.LongToDateTime(val); - }, - changeSize(e){ - this.queryParams.pageSize = e - this.getList() - }, - changePage(e){ - this.queryParams.pageNum = e - this.getList() - }, - /** 鏌ヨ瀛楀吀绫诲瀷鍒楄〃 */ - getList() { - this.loading = true; - listType(this.queryParams).then(response => { - // this.typeList = response.rows; - this.typeList = response.datas; - this.total = response.totalRows; - this.loading = false; - } - ); - }, - // 鍙栨秷鎸夐挳 - cancel() { - this.open = false; - this.reset(); - }, - // 琛ㄥ崟閲嶇疆 - reset() { - this.form = { - dictId: undefined, - dictName: undefined, - dictType: undefined, - status: "0", - remark: undefined - }; - this.resetForm("form"); - }, - /** 鎼滅储鎸夐挳鎿嶄綔 */ - handleQuery() { - this.queryParams.pageNum = 1; - this.getList(); - }, - /** 閲嶇疆鎸夐挳鎿嶄綔 */ - resetQuery() { - this.dateRange = []; - this.resetForm("queryForm"); - this.handleQuery(); }, /** 鏂板鎸夐挳鎿嶄綔 */ handleAdd() { - this.reset(); - this.open = true; - this.title = "娣诲姞瀛楀吀绫诲瀷"; + if (this.editSetting.tenantId) { + this.editSetting.id = null; + this.editSetting.info = null; + this.editSetting.title = '鏂板'; + this.editSetting.show = true; + } else { + this.$message.warning('璇峰厛閫夋嫨宸︿晶鏈烘瀯'); + } }, - // 澶氶�夋閫変腑鏁版嵁 - handleSelectionChange(selection) { - this.ids = selection.map(item => item.dictId) - this.single = selection.length!=1 - this.multiple = !selection.length + showEdit(row) { + console.log(row); + this.editSetting.id = row.id; + this.editSetting.info = row; + this.editSetting.title = '缂栬緫'; + this.editSetting.show = true; }, - /** 淇敼鎸夐挳鎿嶄綔 */ - handleUpdate(row) { - this.reset(); - const dictId = row.dict_id || this.ids - getType(dictId).then(response => { - this.form = response; - this.form.dictName = this.form.dict_name - this.form.dictType = this.form.dict_type - this.open = true; - this.title = "淇敼瀛楀吀绫诲瀷"; - }); - }, - /** 鎻愪氦鎸夐挳 */ - submitForm: function() { - this.$refs["form"].validate(valid => { - if (valid) { - if (this.form.dictId != undefined) { - updateType(this.form).then(response => { - this.$modal.msgSuccess("淇敼鎴愬姛"); - this.open = false; - this.getList(); - }); - } else { - addType(this.form).then(response => { - this.$modal.msgSuccess("鏂板鎴愬姛"); - this.open = false; - this.getList(); - }); - } - } - }); - }, - /** 鍒犻櫎鎸夐挳鎿嶄綔 */ - handleDelete(row) { - const dictIds = row.dictId || this.ids; - this.$modal.confirm('鏄惁纭鍒犻櫎瀛楀吀缂栧彿涓�"' + dictIds + '"鐨勬暟鎹」锛�').then(function() { - return delType(dictIds); - }).then(() => { - this.getList(); - this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); - }).catch(() => {}); - }, - /** 瀵煎嚭鎸夐挳鎿嶄綔 */ - handleExport() { - this.download('system/dict/type/export', { - ...this.queryParams - }, `type_${new Date().getTime()}.xlsx`) - }, - /** 鍒锋柊缂撳瓨鎸夐挳鎿嶄綔 */ - handleRefreshCache() { - refreshCache().then(() => { - this.$modal.msgSuccess("鍒锋柊鎴愬姛"); - this.$store.dispatch('dict/cleanDict'); - }); - } - } + }, }; </script> diff --git a/admin-web/src/views/systemSetting/department/items.js b/admin-web/src/views/systemSetting/department/items.js deleted file mode 100644 index cae6307..0000000 --- a/admin-web/src/views/systemSetting/department/items.js +++ /dev/null @@ -1,33 +0,0 @@ -export default [ - { - type: 'text', - dataIndex: 'dictName', - label: '閮ㄩ棬鍚嶇О', - placeholder: '璇疯緭鍏�', - defaultValue: '' - }, - { - type: 'text', - dataIndex: 'dictName', - label: '缂栧彿', - placeholder: '璇疯緭鍏�', - defaultValue: '' - }, - { - type: 'select', - dataIndex: 'status', - label: '鐘舵��', - placeholder: '璇烽�夋嫨', - defaultValue: '0', - options: [ - { - value: '0', - label: '鍚敤' - }, - { - value: '1', - label: '绂佺敤' - } - ] - } -] -- Gitblit v1.9.1