|
@@ -1,373 +1,375 @@
|
|
|
-<template>
|
|
|
- <el-dialog
|
|
|
- :close-on-click-modal="false"
|
|
|
- :close-on-press-escape="false"
|
|
|
- :title="title"
|
|
|
- :append-to-body="true"
|
|
|
- :visible.sync="isVisible"
|
|
|
- :width="width"
|
|
|
- top="50px"
|
|
|
- >
|
|
|
- <el-form ref="form" :model="tenant" :rules="rules" label-position="right" label-width="130px">
|
|
|
-<!-- <el-form-item label="上级节点:" prop="parent_name">-->
|
|
|
-<!-- <el-input v-model="tenant.parent_name" :disabled="true" :placeholder='$t("common.pleaseEnter")'/>-->
|
|
|
-<!-- </el-form-item>-->
|
|
|
- <template v-for="item in filedList">
|
|
|
- <!-- 如果是【文本框】-->
|
|
|
- <el-form-item
|
|
|
- v-if="item.formControlsType == 'input' && item.showStatus == '1'"
|
|
|
- :key="item.id"
|
|
|
- :label="item.fieldName+':'"
|
|
|
- :prop="item.identifier"
|
|
|
- :rules="{required: item.requireFlag=='1' ? true : false, message: $t('rules.require'), trigger: 'blur'}"
|
|
|
- >
|
|
|
- <el-input v-model="tenant[item.identifier]" :disabled="item.readonly == '1' ? true : false" :placeholder='$t("common.pleaseEnter")'/>
|
|
|
- </el-form-item>
|
|
|
- <!-- 如果是【多行文本框】-->
|
|
|
- <el-form-item
|
|
|
- v-if="item.formControlsType == 'textarea' && item.showStatus == '1'"
|
|
|
- :key="item.id"
|
|
|
- :label="item.fieldName+':'"
|
|
|
- :prop="item.identifier"
|
|
|
- :rules="{required: item.requireFlag=='1' ? true : false, message: $t('rules.require'), trigger: 'blur'}"
|
|
|
- >
|
|
|
- <el-input v-model="tenant[item.identifier]" :disabled="item.readonly == '1' ? true : false" type="textarea" :rows="3" :placeholder='$t("common.pleaseEnter")'/>
|
|
|
- </el-form-item>
|
|
|
- <!-- 如果是【单选框】-->
|
|
|
- <el-form-item
|
|
|
- v-if="item.formControlsType == 'radio' && item.showStatus == '1'"
|
|
|
- :key="item.id"
|
|
|
- :label="item.fieldName+':'"
|
|
|
- :prop="item.identifier"
|
|
|
- :rules="{required: item.requireFlag=='1' ? true : false, message: $t('rules.require'), trigger: 'blur'}"
|
|
|
- >
|
|
|
- <template>
|
|
|
- <el-radio-group v-model="tenant[item.identifier]">
|
|
|
- <el-radio v-for="(obj, index) in commList[item.identifier]" :disabled="item.readonly == '1' ? true : false" :key="index" :label="obj.code">{{obj.name}}</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </template>
|
|
|
- </el-form-item>
|
|
|
- <!-- 如果是【计数器】-->
|
|
|
- <el-form-item
|
|
|
- v-if="item.formControlsType == 'inputNumber' && item.showStatus == '1'"
|
|
|
- :key="item.id"
|
|
|
- :label="item.fieldName+':'"
|
|
|
- :prop="item.identifier"
|
|
|
- :rules="{required: item.requireFlag=='1' ? true : false, message: $t('rules.require'), trigger: 'blur'}"
|
|
|
- >
|
|
|
- <el-input-number v-model="tenant[item.identifier]" :disabled="item.readonly == '1' ? true : false" :min="0" :max="999999999"></el-input-number>
|
|
|
- </el-form-item>
|
|
|
- <!-- 如果是【选择器】-->
|
|
|
- <el-form-item :ref="item.identifier"
|
|
|
- v-if="item.formControlsType == 'select' && item.showStatus == '1'"
|
|
|
- :key="item.id"
|
|
|
- :label="item.fieldName+':'"
|
|
|
- :prop="item.identifier"
|
|
|
- :rules="{required: item.requireFlag=='1' ? true : false, message: $t('rules.require'), trigger: 'blur'}"
|
|
|
- v-show="getShow(item)"
|
|
|
- >
|
|
|
- <el-select v-model="tenant[item.identifier]"
|
|
|
- :disabled=" item.identifier == 'zone_id' ? !zoneEdit:(item.readonly == '1' ? true : false)"
|
|
|
- :placeholder='$t("common.pleaseSelect")' filterable style="width: 100%;">
|
|
|
- <el-option
|
|
|
- v-for="(obj, index) in commList[item.identifier]"
|
|
|
- :key="obj.code"
|
|
|
- :label="obj.name"
|
|
|
- :value="obj.code">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <!-- 如果是【级联选择器】-->
|
|
|
- <el-form-item
|
|
|
- v-if="item.formControlsType == 'cascader' && item.showStatus == '1'"
|
|
|
- :key="item.id"
|
|
|
- :label="item.fieldName+':'"
|
|
|
- :prop="item.identifier"
|
|
|
- :rules="{required: item.requireFlag=='1' ? true : false, message: $t('rules.require'), trigger: 'blur'}"
|
|
|
- >
|
|
|
- <!--<el-select v-model="tenant[item.identifier]" :placeholder='$t("common.pleaseSelect")' filterable style="width: 100%;">
|
|
|
- <el-option
|
|
|
- v-for="(obj, index) in commList[item.identifier]"
|
|
|
- :key="index"
|
|
|
- :label="obj.name"
|
|
|
- :value="obj.code">
|
|
|
- </el-option>
|
|
|
- </el-select>-->
|
|
|
- <div class="block">
|
|
|
- <el-cascader
|
|
|
- :disabled="item.readonly == '1' ? true : false"
|
|
|
- style="width: 100%;"
|
|
|
- :placeholder='$t("common.pleaseSelect")'
|
|
|
- v-model="tenant[item.identifier]"
|
|
|
- :options="commList[item.identifier]"
|
|
|
- :props="{ value: 'code', label: 'name', checkStrictly: true, expandTrigger: 'hover' }"
|
|
|
- clearable>
|
|
|
- </el-cascader>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
- </template>
|
|
|
- </el-form>
|
|
|
- <div slot="footer" class="dialog-footer">
|
|
|
- <el-button plain type="warning" @click="isVisible = false">{{ $t('common.cancel') }}</el-button>
|
|
|
- <el-button plain type="primary" :disabled="confirmDisabled" @click="submitForm">{{ $t('common.confirm') }}</el-button>
|
|
|
- </div>
|
|
|
- </el-dialog>
|
|
|
-</template>
|
|
|
-
|
|
|
-<script>
|
|
|
-
|
|
|
-// 【建模中心】-API
|
|
|
-import modelingCenterApi from "@/api/modelingCenter/modelingCenter"
|
|
|
-// 【BOM管理】-API
|
|
|
-import bomMgrApi from "@/api/prepareProductMgr/bomMgr"
|
|
|
-//【所属产线】-API
|
|
|
-import areaMgrApi from "@/api/resourceProductMgr/areaMgr"
|
|
|
-export default {
|
|
|
- name: 'TenantEdit',
|
|
|
- props: {
|
|
|
- dialogVisible: {
|
|
|
- type: Boolean,
|
|
|
- default: false
|
|
|
- },
|
|
|
- title: {
|
|
|
- type: String,
|
|
|
- default: ''
|
|
|
- }
|
|
|
- },
|
|
|
- data () {
|
|
|
- return {
|
|
|
- type: 'add',
|
|
|
- isEnd: false,
|
|
|
- commList: {key: 1}, // 动态的数据对象,比如表单中的select、cascader、radio、checkbox等需要数据的控件
|
|
|
- filedList: [], // 字段数据
|
|
|
- tenant: this.initTenant(),
|
|
|
- zoneEdit: true,
|
|
|
- screenWidth: 0,
|
|
|
- width: this.initWidth(),
|
|
|
- confirmDisabled: false,
|
|
|
- dicts:{
|
|
|
- NATION: {}
|
|
|
- },
|
|
|
- roles: [],
|
|
|
- rules: {
|
|
|
- },
|
|
|
- radioList: [{"code":"641590096981656001","name":"码农"},{"code":"641590096981655433","name":"码农2"}]
|
|
|
- }
|
|
|
- },
|
|
|
- // 监听数据的变化
|
|
|
- watch: {
|
|
|
- },
|
|
|
- // 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
|
|
|
- created() {
|
|
|
- // 查询字段列表
|
|
|
- this.getFiledList()
|
|
|
- },
|
|
|
- computed: {
|
|
|
- isVisible: {
|
|
|
- get () {
|
|
|
- return this.dialogVisible
|
|
|
- },
|
|
|
- set () {
|
|
|
- this.close()
|
|
|
- this.reset()
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- // DOM已经加载
|
|
|
- mounted () {
|
|
|
- window.onresize = () => {
|
|
|
- return (() => {
|
|
|
- this.width = this.initWidth()
|
|
|
- })()
|
|
|
- }
|
|
|
- },
|
|
|
- methods: {
|
|
|
- initTenant () {
|
|
|
- return {}
|
|
|
- },
|
|
|
- initWidth () {
|
|
|
- this.screenWidth = document.body.clientWidth
|
|
|
- if (this.screenWidth < 991) {
|
|
|
- return '90%'
|
|
|
- } else if (this.screenWidth < 1400) {
|
|
|
- return '45%'
|
|
|
- } else {
|
|
|
- return '800px'
|
|
|
- }
|
|
|
- },
|
|
|
- setTenant (val, dicts) {
|
|
|
- if(val){
|
|
|
- // console.log("dddd == ", val);
|
|
|
- this.tenant = { ...val }
|
|
|
- }
|
|
|
- // 字典表
|
|
|
- this.dicts = dicts
|
|
|
- this.zoneEdit = this.type=='edit' ? false: true
|
|
|
- },
|
|
|
- getShow(item){
|
|
|
- if(item.identifier == "zone_id"){
|
|
|
- return (this.$store.state.account.user.roles.indexOf('舱体') < 0 && this.$store.state.account.user.roles.indexOf('框体') < 0)
|
|
|
- }else if(item.identifier == "product_module_id"){
|
|
|
- return false
|
|
|
- }
|
|
|
- return true
|
|
|
- },
|
|
|
- close () {
|
|
|
- this.$emit('close')
|
|
|
- },
|
|
|
- reset () {
|
|
|
- // 先清除校验,再清除表单,不然有奇怪的bug
|
|
|
- this.$refs.form.clearValidate()
|
|
|
- this.$refs.form.resetFields()
|
|
|
- this.tenant = this.initTenant()
|
|
|
- },
|
|
|
- submitForm () {
|
|
|
- console.log("表单的数据:", this.tenant)
|
|
|
- this.tenant.zone_id = (this.tenant.zone_id==null)?this.commList.zone_id[0].code : this.tenant.zone_id
|
|
|
- this.tenant.product_module_id = (this.tenant.product_module_id==null)? this.commList.product_module_id[0].code : this.tenant.product_module_id
|
|
|
- this.$refs.form.validate((valid) => {
|
|
|
- if (valid) {
|
|
|
- // 清楚对象中一个属性
|
|
|
- this.tenant.parent_name = undefined
|
|
|
- this.confirmDisabled = true
|
|
|
- if (this.type === 'add') {
|
|
|
- this.save()
|
|
|
- } else {
|
|
|
- this.update()
|
|
|
- }
|
|
|
- } else {
|
|
|
- return false
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- save () {
|
|
|
- bomMgrApi.save(this.tenant)
|
|
|
- .then((response) => {
|
|
|
- const res = response.data
|
|
|
- if (res.isSuccess) {
|
|
|
- this.isVisible = false
|
|
|
- this.$message({
|
|
|
- message: this.$t('tips.createSuccess'),
|
|
|
- type: 'success'
|
|
|
- })
|
|
|
- // 通知列表
|
|
|
- this.$emit("success");
|
|
|
- // 通知列表-并关闭弹出框
|
|
|
- this.$emit("close");
|
|
|
- }
|
|
|
- }).finally(() => {
|
|
|
- this.confirmDisabled = false
|
|
|
- return true
|
|
|
- })
|
|
|
- },
|
|
|
- update () {
|
|
|
- console.log(this.tenant)
|
|
|
- bomMgrApi.update(this.tenant)
|
|
|
- .then((response) => {
|
|
|
- const res = response.data
|
|
|
- if (res.isSuccess) {
|
|
|
- this.isVisible = false
|
|
|
- this.$message({
|
|
|
- message: this.$t('tips.updateSuccess'),
|
|
|
- type: 'success'
|
|
|
- })
|
|
|
- // 通知列表
|
|
|
- this.$emit("success");
|
|
|
- // 通知列表-并关闭弹出框
|
|
|
- this.$emit("close");
|
|
|
- }
|
|
|
- }).finally(() => {
|
|
|
- this.confirmDisabled = false
|
|
|
- return true
|
|
|
- })
|
|
|
- },
|
|
|
- // 查询字段数据
|
|
|
- getFiledList(){
|
|
|
- // 条件查询参数--业务类型-bizType(1-bom建模2-工艺建模3-客户建模)
|
|
|
- modelingCenterApi.getList({bizType: '1'}).then(res => {
|
|
|
- res = res.data
|
|
|
- console.log("字段数据:", res)
|
|
|
- if(res.isSuccess){
|
|
|
- this.filedList = res.data
|
|
|
- // 判断数据是否存在
|
|
|
- if(res.data && res.data.length > 0){
|
|
|
- let leng = res.data.length - 1
|
|
|
- res.data.forEach((item, index) => {
|
|
|
- // 需要加载数据的字段
|
|
|
- let str = "radio,checkbox,select,cascader"
|
|
|
- if(str.indexOf(item.formControlsType) > -1 ){
|
|
|
- // 加载响应的数据
|
|
|
- this.getCommList(item)
|
|
|
- }
|
|
|
- if(index == leng){
|
|
|
- this.isEnd = true
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
- }else{
|
|
|
- this.filedList = []
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- // 加载动态表单的数据-函数
|
|
|
- getCommList(fieldObj){
|
|
|
- let that = this
|
|
|
- modelingCenterApi.formCommList({comboxUrl: fieldObj.comboxUrl}).then(res => {
|
|
|
- res = res.data
|
|
|
- console.log("动态表单的数据:", res)
|
|
|
- if(res.isSuccess){
|
|
|
- // 初始化,表单的数据
|
|
|
- if(fieldObj.identifier=="meterial_id" || fieldObj.identifier=="tray_id" || fieldObj.identifier=="zone_id"){
|
|
|
- //数据权限过滤
|
|
|
- let role = this.$store.state.account.user.roles.indexOf('舱体')<0 && this.$store.state.account.user.roles.indexOf('框体')<0 ? null : (this.$store.state.account.user.roles.indexOf('舱体')<0? "舱体":"框体")
|
|
|
- if(role!=null){
|
|
|
- res.data = res.data.filter(item=>{
|
|
|
- return item.name.indexOf(role) < 0;
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- that.commList[fieldObj.identifier] = res.data
|
|
|
- }
|
|
|
- })
|
|
|
- if(this.isEnd){
|
|
|
- this.commList.key++
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-}
|
|
|
-</script>
|
|
|
-<style lang="scss" >
|
|
|
-.avatar-uploader .el-upload {
|
|
|
- border: 1px dashed #d9d9d9;
|
|
|
- border-radius: 6px;
|
|
|
- cursor: pointer;
|
|
|
- position: relative;
|
|
|
- overflow: hidden;
|
|
|
-}
|
|
|
-.avatar-uploader .el-upload:hover {
|
|
|
- border-color: #409eff;
|
|
|
-}
|
|
|
-.avatar-uploader-icon {
|
|
|
- font-size: 28px;
|
|
|
- color: #8c939d;
|
|
|
- width: 100px;
|
|
|
- height: 100px;
|
|
|
- line-height: 100px;
|
|
|
- text-align: center;
|
|
|
-}
|
|
|
-.avatar {
|
|
|
- width: 100px;
|
|
|
- height: 100px;
|
|
|
- display: block;
|
|
|
-}
|
|
|
-.checkUsed{
|
|
|
- display: inline-block;
|
|
|
- margin-left: 10px;
|
|
|
- color: #1890ff;
|
|
|
-}
|
|
|
-.dialog-footer{
|
|
|
- text-align: right;
|
|
|
-}
|
|
|
-</style>
|
|
|
+<template>
|
|
|
+ <el-dialog
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ :close-on-press-escape="false"
|
|
|
+ :title="title"
|
|
|
+ :append-to-body="true"
|
|
|
+ :visible.sync="isVisible"
|
|
|
+ :width="width"
|
|
|
+ top="50px"
|
|
|
+ >
|
|
|
+ <el-form ref="form" :model="tenant" :rules="rules" label-position="right" label-width="130px">
|
|
|
+<!-- <el-form-item label="上级节点:" prop="parent_name">-->
|
|
|
+<!-- <el-input v-model="tenant.parent_name" :disabled="true" :placeholder='$t("common.pleaseEnter")'/>-->
|
|
|
+<!-- </el-form-item>-->
|
|
|
+ <template v-for="item in filedList">
|
|
|
+ <!-- 如果是【文本框】-->
|
|
|
+ <el-form-item
|
|
|
+ v-if="item.formControlsType == 'input' && item.showStatus == '1'"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.fieldName+':'"
|
|
|
+ :prop="item.identifier"
|
|
|
+ :rules="{required: item.requireFlag=='1' ? true : false, message: $t('rules.require'), trigger: 'blur'}"
|
|
|
+ >
|
|
|
+ <el-input v-model="tenant[item.identifier]" :disabled="item.readonly == '1' ? true : false" :placeholder='$t("common.pleaseEnter")'/>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- 如果是【多行文本框】-->
|
|
|
+ <el-form-item
|
|
|
+ v-if="item.formControlsType == 'textarea' && item.showStatus == '1'"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.fieldName+':'"
|
|
|
+ :prop="item.identifier"
|
|
|
+ :rules="{required: item.requireFlag=='1' ? true : false, message: $t('rules.require'), trigger: 'blur'}"
|
|
|
+ >
|
|
|
+ <el-input v-model="tenant[item.identifier]" :disabled="item.readonly == '1' ? true : false" type="textarea" :rows="3" :placeholder='$t("common.pleaseEnter")'/>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- 如果是【单选框】-->
|
|
|
+ <el-form-item
|
|
|
+ v-if="item.formControlsType == 'radio' && item.showStatus == '1'"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.fieldName+':'"
|
|
|
+ :prop="item.identifier"
|
|
|
+ :rules="{required: item.requireFlag=='1' ? true : false, message: $t('rules.require'), trigger: 'blur'}"
|
|
|
+ >
|
|
|
+ <template>
|
|
|
+ <el-radio-group v-model="tenant[item.identifier]">
|
|
|
+ <el-radio v-for="(obj, index) in commList[item.identifier]" :disabled="item.readonly == '1' ? true : false" :key="index" :label="obj.code">{{obj.name}}</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </template>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- 如果是【计数器】-->
|
|
|
+ <el-form-item
|
|
|
+ v-if="item.formControlsType == 'inputNumber' && item.showStatus == '1'"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.fieldName+':'"
|
|
|
+ :prop="item.identifier"
|
|
|
+ :rules="{required: item.requireFlag=='1' ? true : false, message: $t('rules.require'), trigger: 'blur'}"
|
|
|
+ >
|
|
|
+ <el-input-number v-model="tenant[item.identifier]" :disabled="item.readonly == '1' ? true : false" :min="0" :max="999999999"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- 如果是【选择器】-->
|
|
|
+ <el-form-item :ref="item.identifier"
|
|
|
+ v-if="item.formControlsType == 'select' && item.showStatus == '1'"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.fieldName+':'"
|
|
|
+ :prop="item.identifier"
|
|
|
+ :rules="{required: item.requireFlag=='1' ? true : false, message: $t('rules.require'), trigger: 'blur'}"
|
|
|
+ v-show="getShow(item)"
|
|
|
+ >
|
|
|
+ <el-select v-model="tenant[item.identifier]"
|
|
|
+ :disabled=" item.identifier == 'zone_id' ? !zoneEdit:(item.readonly == '1' ? true : false)"
|
|
|
+ :placeholder='$t("common.pleaseSelect")' filterable style="width: 100%;">
|
|
|
+ <el-option
|
|
|
+ v-for="(obj, index) in commList[item.identifier]"
|
|
|
+ :key="obj.code"
|
|
|
+ :label="obj.name"
|
|
|
+ :value="obj.code">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- 如果是【级联选择器】-->
|
|
|
+ <el-form-item
|
|
|
+ v-if="item.formControlsType == 'cascader' && item.showStatus == '1'"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.fieldName+':'"
|
|
|
+ :prop="item.identifier"
|
|
|
+ :rules="{required: item.requireFlag=='1' ? true : false, message: $t('rules.require'), trigger: 'blur'}"
|
|
|
+ >
|
|
|
+ <!--<el-select v-model="tenant[item.identifier]" :placeholder='$t("common.pleaseSelect")' filterable style="width: 100%;">
|
|
|
+ <el-option
|
|
|
+ v-for="(obj, index) in commList[item.identifier]"
|
|
|
+ :key="index"
|
|
|
+ :label="obj.name"
|
|
|
+ :value="obj.code">
|
|
|
+ </el-option>
|
|
|
+ </el-select>-->
|
|
|
+ <div class="block">
|
|
|
+ <el-cascader
|
|
|
+ :disabled="item.readonly == '1' ? true : false"
|
|
|
+ style="width: 100%;"
|
|
|
+ :placeholder='$t("common.pleaseSelect")'
|
|
|
+ v-model="tenant[item.identifier]"
|
|
|
+ :options="commList[item.identifier]"
|
|
|
+ :props="{ value: 'code', label: 'name', checkStrictly: true, expandTrigger: 'hover' }"
|
|
|
+ clearable>
|
|
|
+ </el-cascader>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ </el-form>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button plain type="warning" @click="isVisible = false">{{ $t('common.cancel') }}</el-button>
|
|
|
+ <el-button plain type="primary" :disabled="confirmDisabled" @click="submitForm">{{ $t('common.confirm') }}</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+
|
|
|
+// 【建模中心】-API
|
|
|
+import modelingCenterApi from "@/api/modelingCenter/modelingCenter"
|
|
|
+// 【BOM管理】-API
|
|
|
+import bomMgrApi from "@/api/prepareProductMgr/bomMgr"
|
|
|
+//【所属产线】-API
|
|
|
+import areaMgrApi from "@/api/resourceProductMgr/areaMgr"
|
|
|
+export default {
|
|
|
+ name: 'TenantEdit',
|
|
|
+ props: {
|
|
|
+ dialogVisible: {
|
|
|
+ type: Boolean,
|
|
|
+ default: false
|
|
|
+ },
|
|
|
+ title: {
|
|
|
+ type: String,
|
|
|
+ default: ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data () {
|
|
|
+ return {
|
|
|
+ type: 'add',
|
|
|
+ isEnd: false,
|
|
|
+ commList: {key: 1}, // 动态的数据对象,比如表单中的select、cascader、radio、checkbox等需要数据的控件
|
|
|
+ filedList: [], // 字段数据
|
|
|
+ tenant: this.initTenant(),
|
|
|
+ zoneEdit: true,
|
|
|
+ screenWidth: 0,
|
|
|
+ width: this.initWidth(),
|
|
|
+ confirmDisabled: false,
|
|
|
+ dicts:{
|
|
|
+ NATION: {}
|
|
|
+ },
|
|
|
+ roles: [],
|
|
|
+ rules: {
|
|
|
+ },
|
|
|
+ radioList: [{"code":"641590096981656001","name":"码农"},{"code":"641590096981655433","name":"码农2"}]
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 监听数据的变化
|
|
|
+ watch: {
|
|
|
+ },
|
|
|
+ // 实例已经在内存中创建好,此时data和methods已将ok,如果要操作data中的数据或是调用methods中的方法,最早只能在created中操作
|
|
|
+ created() {
|
|
|
+ // 查询字段列表
|
|
|
+ this.getFiledList()
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ isVisible: {
|
|
|
+ get () {
|
|
|
+ return this.dialogVisible
|
|
|
+ },
|
|
|
+ set () {
|
|
|
+ this.close()
|
|
|
+ this.reset()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // DOM已经加载
|
|
|
+ mounted () {
|
|
|
+ window.onresize = () => {
|
|
|
+ return (() => {
|
|
|
+ this.width = this.initWidth()
|
|
|
+ })()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ initTenant () {
|
|
|
+ return {}
|
|
|
+ },
|
|
|
+ initWidth () {
|
|
|
+ this.screenWidth = document.body.clientWidth
|
|
|
+ if (this.screenWidth < 991) {
|
|
|
+ return '90%'
|
|
|
+ } else if (this.screenWidth < 1400) {
|
|
|
+ return '45%'
|
|
|
+ } else {
|
|
|
+ return '800px'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ setTenant (val, dicts) {
|
|
|
+ if(val){
|
|
|
+ // console.log("dddd == ", val);
|
|
|
+ this.tenant = { ...val }
|
|
|
+ }
|
|
|
+ // 字典表
|
|
|
+ this.dicts = dicts
|
|
|
+ this.zoneEdit = this.type=='edit' ? false: true
|
|
|
+ },
|
|
|
+ getShow(item){
|
|
|
+ if(item.identifier == "zone_id"){
|
|
|
+ return (this.$store.state.account.user.roles.indexOf('舱体') < 0 && this.$store.state.account.user.roles.indexOf('框体') < 0)
|
|
|
+ }else if(item.identifier == "product_module_id"){
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ return true
|
|
|
+ },
|
|
|
+ close () {
|
|
|
+ this.$emit('close')
|
|
|
+ },
|
|
|
+ reset () {
|
|
|
+ // 先清除校验,再清除表单,不然有奇怪的bug
|
|
|
+ this.$refs.form.clearValidate()
|
|
|
+ this.$refs.form.resetFields()
|
|
|
+ this.tenant = this.initTenant()
|
|
|
+ },
|
|
|
+ submitForm () {
|
|
|
+ console.log("表单的数据:", this.tenant)
|
|
|
+ if(this.commList.zone_id){
|
|
|
+ this.tenant.zone_id = (this.tenant.zone_id==null)?this.commList.zone_id[0].code : this.tenant.zone_id
|
|
|
+ }
|
|
|
+ this.tenant.product_module_id = (this.tenant.product_module_id==null)? this.commList.product_module_id[0].code : this.tenant.product_module_id
|
|
|
+ this.$refs.form.validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ // 清楚对象中一个属性
|
|
|
+ this.tenant.parent_name = undefined
|
|
|
+ this.confirmDisabled = true
|
|
|
+ if (this.type === 'add') {
|
|
|
+ this.save()
|
|
|
+ } else {
|
|
|
+ this.update()
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ save () {
|
|
|
+ bomMgrApi.save(this.tenant)
|
|
|
+ .then((response) => {
|
|
|
+ const res = response.data
|
|
|
+ if (res.isSuccess) {
|
|
|
+ this.isVisible = false
|
|
|
+ this.$message({
|
|
|
+ message: this.$t('tips.createSuccess'),
|
|
|
+ type: 'success'
|
|
|
+ })
|
|
|
+ // 通知列表
|
|
|
+ this.$emit("success");
|
|
|
+ // 通知列表-并关闭弹出框
|
|
|
+ this.$emit("close");
|
|
|
+ }
|
|
|
+ }).finally(() => {
|
|
|
+ this.confirmDisabled = false
|
|
|
+ return true
|
|
|
+ })
|
|
|
+ },
|
|
|
+ update () {
|
|
|
+ console.log(this.tenant)
|
|
|
+ bomMgrApi.update(this.tenant)
|
|
|
+ .then((response) => {
|
|
|
+ const res = response.data
|
|
|
+ if (res.isSuccess) {
|
|
|
+ this.isVisible = false
|
|
|
+ this.$message({
|
|
|
+ message: this.$t('tips.updateSuccess'),
|
|
|
+ type: 'success'
|
|
|
+ })
|
|
|
+ // 通知列表
|
|
|
+ this.$emit("success");
|
|
|
+ // 通知列表-并关闭弹出框
|
|
|
+ this.$emit("close");
|
|
|
+ }
|
|
|
+ }).finally(() => {
|
|
|
+ this.confirmDisabled = false
|
|
|
+ return true
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 查询字段数据
|
|
|
+ getFiledList(){
|
|
|
+ // 条件查询参数--业务类型-bizType(1-bom建模2-工艺建模3-客户建模)
|
|
|
+ modelingCenterApi.getList({bizType: '1'}).then(res => {
|
|
|
+ res = res.data
|
|
|
+ console.log("字段数据:", res)
|
|
|
+ if(res.isSuccess){
|
|
|
+ this.filedList = res.data
|
|
|
+ // 判断数据是否存在
|
|
|
+ if(res.data && res.data.length > 0){
|
|
|
+ let leng = res.data.length - 1
|
|
|
+ res.data.forEach((item, index) => {
|
|
|
+ // 需要加载数据的字段
|
|
|
+ let str = "radio,checkbox,select,cascader"
|
|
|
+ if(str.indexOf(item.formControlsType) > -1 ){
|
|
|
+ // 加载响应的数据
|
|
|
+ this.getCommList(item)
|
|
|
+ }
|
|
|
+ if(index == leng){
|
|
|
+ this.isEnd = true
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ this.filedList = []
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ // 加载动态表单的数据-函数
|
|
|
+ getCommList(fieldObj){
|
|
|
+ let that = this
|
|
|
+ modelingCenterApi.formCommList({comboxUrl: fieldObj.comboxUrl}).then(res => {
|
|
|
+ res = res.data
|
|
|
+ console.log("动态表单的数据:", res)
|
|
|
+ if(res.isSuccess){
|
|
|
+ // 初始化,表单的数据
|
|
|
+ if(fieldObj.identifier=="meterial_id" || fieldObj.identifier=="tray_id" || fieldObj.identifier=="zone_id"){
|
|
|
+ //数据权限过滤
|
|
|
+ let role = this.$store.state.account.user.roles.indexOf('舱体')<0 && this.$store.state.account.user.roles.indexOf('框体')<0 ? null : (this.$store.state.account.user.roles.indexOf('舱体')<0? "舱体":"框体")
|
|
|
+ if(role!=null){
|
|
|
+ res.data = res.data.filter(item=>{
|
|
|
+ return item.name.indexOf(role) < 0;
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ that.commList[fieldObj.identifier] = res.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+ if(this.isEnd){
|
|
|
+ this.commList.key++
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+<style lang="scss" >
|
|
|
+.avatar-uploader .el-upload {
|
|
|
+ border: 1px dashed #d9d9d9;
|
|
|
+ border-radius: 6px;
|
|
|
+ cursor: pointer;
|
|
|
+ position: relative;
|
|
|
+ overflow: hidden;
|
|
|
+}
|
|
|
+.avatar-uploader .el-upload:hover {
|
|
|
+ border-color: #409eff;
|
|
|
+}
|
|
|
+.avatar-uploader-icon {
|
|
|
+ font-size: 28px;
|
|
|
+ color: #8c939d;
|
|
|
+ width: 100px;
|
|
|
+ height: 100px;
|
|
|
+ line-height: 100px;
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+.avatar {
|
|
|
+ width: 100px;
|
|
|
+ height: 100px;
|
|
|
+ display: block;
|
|
|
+}
|
|
|
+.checkUsed{
|
|
|
+ display: inline-block;
|
|
|
+ margin-left: 10px;
|
|
|
+ color: #1890ff;
|
|
|
+}
|
|
|
+.dialog-footer{
|
|
|
+ text-align: right;
|
|
|
+}
|
|
|
+</style>
|