Browse Source

门类管理 标签管理修改

master
z_yu 3 years ago
parent
commit
fb7cb172f7
  1. 8
      src/api/category/listBrowsing.js
  2. 10
      src/api/storeManage/tagManage/bindTagList.js
  3. 4
      src/views/archivesManage/caseManage/index.vue
  4. 43
      src/views/category/descriptionPreview/index.vue
  5. 2
      src/views/category/index.vue
  6. 74
      src/views/components/category/PreviewForm.vue
  7. 8
      src/views/components/category/SettingForm.vue
  8. 10
      src/views/storeManage/deviceManage/index.vue
  9. 95
      src/views/storeManage/tagManage/bindTagList/index.vue

8
src/api/category/listBrowsing.js

@ -16,6 +16,14 @@ export function edit(data) {
})
}
export function previewFormOrder(data) {
return request({
url: 'api/arc-display/sort',
method: 'put',
data
})
}
export function order(data) {
return request({
url: 'api/arc-list/display-order',

10
src/api/storeManage/tagManage/bindTagList.js

@ -15,4 +15,12 @@ export function bingdingLabel(data) {
data
})
}
export default { initTagList, bingdingLabel }
export function unbindTag(data) {
return request({
url: 'api/tag/unbindTag',
method: 'post',
data
})
}
export default { initTagList, bingdingLabel, unbindTag }

4
src/views/archivesManage/caseManage/index.vue

@ -10,7 +10,7 @@
</el-select> -->
<el-input v-model="crud.query[inputSelect]" clearable size="small" placeholder="请输入关键词" style="width: 200px;" class="input-prepend filter-item" @keyup.enter.native="crud.toQuery">
<el-select slot="prepend" v-model="inputSelect" style="width: 80px" @change="crud.toQuery">
<el-option v-for="item in queryOption" :key="item.value" :label="item.label" :value="item.value" />
<el-option v-for="item in queryOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-input>
<rrOperation />
@ -111,7 +111,7 @@ export default {
}
],
inputSelect: 'caseName',
queryOption: [
queryOptions: [
{
label: '盒名称',
value: 'caseName'

43
src/views/category/descriptionPreview/index.vue

@ -34,7 +34,7 @@
<div class="des-title">
<p>界面预览效果</p>
</div>
<PreviewForm :is-disabled="false" :all-fields-data="allFieldsData" />
<PreviewForm ref="previewForm1" :is-has-code="true" :is-disabled="false" :form-preview-data.sync="isInputFields" :selected-category="selectedCategory" />
</div>
<!-- 修改字段 -->
@ -42,7 +42,7 @@
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<SettingForm ref="editForm" :is-disabled="false" :is-add="false" :this-fields="thisFields" />
<SettingForm ref="editForm" :is-disabled="false" :is-add="false" :this-fields="editField" />
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="editSubmit">保存</el-button>
</div>
@ -55,9 +55,10 @@
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<i class="drag-tip">提示请通过拖动鼠标来调整当前顺序</i>
<PreviewForm :is-disabled="true" :all-fields-data="allFieldsData" />
<!-- <PreviewForm :is-disabled="true" :all-fields-data="allFieldsData" /> -->
<PreviewForm ref="previewForm" :is-has-code="true" :is-disabled="false" :is-draggable="true" :form-preview-data.sync="isInputFields" :selected-category="selectedCategory" />
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="previewFormVisible = false">保存</el-button>
<el-button type="primary" @click.native="handleSort">保存</el-button>
</div>
</div>
</el-dialog>
@ -69,6 +70,7 @@ import PreviewForm from '@/views/components/category/PreviewForm'
import SettingForm from '@/views/components/category/SettingForm'
import { FetchArchivesTypeManage } from '@/api/category/category'
import { edit } from '@/api/category/fieldManage'
import { previewFormOrder } from '@/api/category/listBrowsing'
export default {
name: 'DescriptionPreview',
components: { PreviewForm, SettingForm },
@ -87,7 +89,9 @@ export default {
settingFormVisible: false, // - dialog
previewFormVisible: false, // form - dialog
fieldsActive: 0, // index
thisFields: { dictionaryConfigId: { dicName: null, id: null }} //
thisFields: { dictionaryConfigId: { dicName: null, id: null }}, //
editField: {},
isInputFields: []
}
},
watch: {
@ -97,18 +101,25 @@ export default {
},
mounted() {
this.getArchivesType()
this.$refs.previewForm.rendered = true
},
methods: {
getArchivesType() {
FetchArchivesTypeManage({ categoryId: this.selectedCategory.id, isType: 2 }).then(res => {
this.allFieldsData.splice(0, this.allFieldsData.length)
res.forEach((item, index) => {
this.isInputFields.splice(0, this.isInputFields.length)
let setField = false
res.sort(this.compare).forEach((item, index) => {
// null
item.dictionaryConfigId = item.dictionaryConfigId || { dicName: null, id: null }
this.allFieldsData.push(item)
if (item.isInput && !this.thisFields.id) {
if (item.isInput && !setField) {
this.fieldsActive = index
this.thisFields = item
setField = true
}
if (item.isInput) {
this.isInputFields.push(item)
}
})
})
@ -119,7 +130,11 @@ export default {
// this.editResetForm()
done()
},
compare(a, b) {
return a.isSequence - b.isSequence
},
settingForm() {
this.editField = JSON.parse(JSON.stringify(this.thisFields))
this.settingFormVisible = true
},
//
@ -134,7 +149,7 @@ export default {
if (!valid) {
return
}
edit(this.thisFields).then(() => {
edit(this.editField).then(() => {
this.$notify({
title: '保存成功',
type: 'success',
@ -147,6 +162,18 @@ export default {
})
})
return false
},
handleSort() {
const sortParam = this.$refs.previewForm.formPreviewData.map((item, index) => {
return {
isSequence: index + 1,
id: item.id
}
})
previewFormOrder(sortParam).then(() => {
this.previewFormVisible = false
this.getArchivesType()
})
}
}
}

2
src/views/category/index.vue

@ -29,7 +29,7 @@
<sortDialog ref="sort" @treeNodeSort="treeNodeSort" />
<!-- 门类列表 -->
<el-row class="container-main" :gutter="20">
<el-col class="container-left curd-in-out" :xs="10" :sm="8" :md="5" :lg="6" :xl="5">
<el-col class="container-left curd-in-out" :xs="10" :sm="8" :md="5" :lg="5" :xl="5">
<span class="right-top-line" />
<span class="left-bottom-line" />
<crudOperation :permission="permission">

74
src/views/components/category/PreviewForm.vue

@ -2,7 +2,7 @@
<div class="preview-content right-preview">
<el-form ref="addOrUpdateForm" :model="addOrUpdateForm" :rules="rules" :validate-on-rule-change="false" label-width="120px">
<el-row :gutter="4" style="padding:0 20px">
<draggable v-bind="{draggable:'.drag-item',animation:500}" :disabled="!isDisabled" @update="datadragEnd">
<draggable v-bind="{draggable:'.drag-item',animation:500}" :disabled="!isDraggable" @update="datadragEnd">
<el-col v-for="(item,index) in formPreviewData" v-show="item.fieldName !== 'barcode'" :key="index" :class="['drag-item',item.fieldName === 'barcode'? 'barcode-input':'']" :span="item.isLine || item.fieldName === 'barcode' ? 24 : 12">
<el-form-item :label="item.fieldCnName" :prop="item.fieldName">
<!-- select :load-options="loadOptions"-->
@ -21,33 +21,11 @@
/>
<!-- text / number / textarea / popover -->
<!-- :validate-event="isDisabled" -->
<el-input
v-if="item.isInputClass !== 'select' && item.isInputClass !== 'date' && item.fieldName !== 'barcode' "
v-model="addOrUpdateForm[item.fieldName]"
:type="item.isInputClass === 'popover'? 'text' : item.isInputClass"
:rows="item.isInputClass === 'textarea' ? 3 : ''"
:class="{'input-popover':(item.isInputClass === 'popover')}"
:style="{ width: item.editLength+'px'}"
:disabled="isDisabled"
:validate-event="!isDisabled"
@keyup.enter.native="isRepeatHandle(item)"
@blur="isRepeatHandle(item)"
>
<el-input v-if="item.isInputClass !== 'select' && item.isInputClass !== 'date' && item.fieldName !== 'barcode' " v-model="addOrUpdateForm[item.fieldName]" :type="item.isInputClass === 'popover'? 'text' : item.isInputClass" :rows="item.isInputClass === 'textarea' ? 3 : ''" :class="{'input-popover':(item.isInputClass === 'popover')}" :style="{ width: item.editLength+'px'}" :disabled="isDisabled" :validate-event="!isDisabled" @keyup.enter.native="isRepeatHandle(item)" @blur="isRepeatHandle(item)">
<i v-if="item.isInputClass === 'popover'" slot="suffix" class="el-input__icon iconfont icon-weibiaoti-2" @click="handleCurrentFieldName(item)" />
</el-input>
<!-- date -->
<el-date-picker
v-if="item.isInputClass === 'date'"
v-model="addOrUpdateForm[item.fieldName]"
type="date"
align="right"
format="yyyy-MM-dd"
placeholder=""
:clearable="false"
:style="{ width: item.editLength+'px'}"
:disabled="isDisabled"
:validate-event="!isDisabled"
/>
<el-date-picker v-if="item.isInputClass === 'date'" v-model="addOrUpdateForm[item.fieldName]" type="date" align="right" format="yyyy-MM-dd" placeholder="" :clearable="false" :style="{ width: item.editLength+'px'}" :disabled="isDisabled" :validate-event="!isDisabled" />
</el-form-item>
</el-col>
</draggable>
@ -55,15 +33,7 @@
<el-row v-if="!isHasCode" style="border-top: 1px solid #339cff; padding: 20px 20px 0 20px;">
<el-col v-for="(item,index) in formPreviewData.slice(formPreviewData.length-1,formPreviewData.length)" :key="'barcode'+index">
<el-form-item :label="item.fieldCnName" :prop="item.fieldName">
<el-input
v-model="addOrUpdateForm[item.fieldName]"
type="text"
style="width: 510px"
:disabled="isDisabled"
:validate-event="!isDisabled"
@keyup.enter.native="isRepeatHandle(item)"
@blur="isRepeatHandle(item)"
/>
<el-input v-model="addOrUpdateForm[item.fieldName]" type="text" style="width: 510px" :disabled="isDisabled" :validate-event="!isDisabled" @keyup.enter.native="isRepeatHandle(item)" @blur="isRepeatHandle(item)" />
</el-form-item>
</el-col>
</el-row>
@ -125,6 +95,10 @@ export default {
isHasCode: {
type: Boolean,
required: true
},
isDraggable: {
type: Boolean,
default: false
}
},
data() {
@ -272,10 +246,30 @@ export default {
})
},
//
datadragEnd(evt) {
evt.preventDefault()
console.log('拖动前的索引 :' + evt.oldIndex)
console.log('拖动后的索引 :' + evt.newIndex)
// datadragEnd(evt) {
// evt.preventDefault()
// console.log(' :' + evt.oldIndex)
// console.log(' :' + evt.newIndex)
// console.log(this.formPreviewData)
// },
datadragEnd(event) {
//
const oldIndex = event.oldIndex //
const newIndex = event.newIndex //
const diff = Math.abs(newIndex - oldIndex) //
const index = this.formPreviewData[oldIndex]
if (oldIndex > newIndex) {
for (let i = 0; i < diff; i++) {
this.formPreviewData[oldIndex - i] = this.formPreviewData[oldIndex - i - 1]
}
this.formPreviewData[newIndex] = index
} else {
for (let i = 0; i < diff; i++) {
this.formPreviewData[oldIndex + i] = this.formPreviewData[oldIndex + i + 1]
}
this.formPreviewData[newIndex] = index
}
console.log(this.formPreviewData)
},
submitForm(formName, categoryId) {
//
@ -341,11 +335,11 @@ export default {
border: 1px solid #3a99fd;
margin: 0 auto;
.el-row{
.el-row {
margin-left: 0 !important;
margin-right: 0 !important;
}
.el-col{
.el-col {
padding-left: 0 !important;
padding-right: 0 !important;
}

8
src/views/components/category/SettingForm.vue

@ -71,7 +71,7 @@
<el-checkbox v-model="form.isFilling" name="isFilling" :disabled="isDisabled" @change="changeSupplement" />
</el-form-item>
<el-form-item class="input-num" label="位数" prop="fillingDigit">
<el-input v-if="isDisabled" v-model="form.fillingDigit" readonly />
<el-input v-if="isDisabled || !form.isFilling" v-model="form.fillingDigit" readonly />
<!-- <el-input v-model="form.fillingDigit" type="number" :min="1" :disabled="isDisabled || !form.isSupplement" /> -->
<el-input-number v-else v-model="form.fillingDigit" controls-position="right" :min="1" :disabled="isDisabled || !form.isFilling" />
<span></span>
@ -150,7 +150,8 @@ export default {
var getRules = () => {
const rules = {
fieldCnName: [
{ required: true, message: '请输入中文名称', trigger: 'blur' }
{ required: true, message: '请输入中文名称', trigger: 'blur' },
{ max: 7, message: '最大长度7个字符', trigger: 'blur' }
],
fieldName: [
{ required: true, message: '请选择字段标识', trigger: 'blur' },
@ -320,6 +321,9 @@ export default {
this.form.isFilling = false
this.$message.error('著录形式必须为数字框才可操作!')
}
if (this.form.isDataType !== 2 && this.form.isInputClass === 'number') {
this.form.fillingDigit = 1
}
}
},
// -

10
src/views/storeManage/deviceManage/index.vue

@ -6,15 +6,9 @@
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="80px">
<el-form-item label="字典名称" prop="dicName">
<el-form-item label="区域名称" prop="dicName">
<el-input v-model="form.dicName" style="width: 370px;" />
</el-form-item>
<el-form-item label="字典代码" prop="dicCode">
<el-input v-model="form.dicCode" style="width: 370px;" />
</el-form-item>
<el-form-item label="内容说明">
<el-input v-model="form.dicExplain" style="width: 370px;" type="textarea" :rows="4" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
@ -72,7 +66,7 @@ export default {
cruds() {
return [
CRUD({
title: '字典', url: 'api/dictrionary/menu',
title: '区域', url: 'api/dictrionary/menu',
crudMethod: { ...crudDict },
optShow: {
add: true,

95
src/views/storeManage/tagManage/bindTagList/index.vue

@ -1,12 +1,20 @@
<template>
<div>
<div class="head-container">
<el-select slot="prepend" v-model="query.isType" style="width: 80px" @change="initData">
<el-option v-for="item in typeOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<el-input v-model="query[inputSelect]" clearable size="small" placeholder="请输入关键词" style="width: 200px;" class="input-prepend filter-item" @keyup.enter.native="initData">
<el-select slot="prepend" v-model="inputSelect" style="width: 80px">
<el-option v-for="item in queryOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-input>
<div class="archives-handler-btn">
<!-- iconfont icon-weibiaoti-2 -->
<el-button class="lending-btn" type="primary" @click="unbind()">解除绑定</el-button>
<el-button class="lending-btn" type="primary" :loading="unbindBtnLoading" @click="unbind()">解除绑定</el-button>
</div>
</div>
<el-table ref="table" v-loading="loading" :data="bindTagList" style="width: 100%;" height="calc(100vh - 463px)" @row-click="clickRowHandler">
<el-table ref="table" v-loading="loading" :data="bindTagList" style="width: 100%;" height="calc(100vh - 463px)" @row-click="clickRowHandler" @selection-change="selectionChangeHandler">
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column prop="tid" label="TID" align="center" />
@ -25,14 +33,28 @@
</el-table-column>
</el-table>
<el-pagination :page-size.sync="page.size" :total="page.total" :current-page.sync="page.page" style="margin-top: 8px;" layout="total, prev, pager, next, sizes" @size-change="sizeChangeHandler($event)" @current-change="pageChangeHandler" />
<el-dialog title="解除绑定" :visible.sync="unbindVisible">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<div class="dialog-delt">
<p><span>确定解除当前选中标签吗</span></p>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click.native="handleConfirm">确定</el-button>
</div>
</div>
</el-dialog>
</div>
<!--删除对话框组件-->
</template>
<script>
import { initTagList } from '@/api/storeManage/tagManage/bindTagList'
import { initTagList, unbindTag } from '@/api/storeManage/tagManage/bindTagList'
export default {
data() {
return {
selections: [],
bindTagList: [],
loading: false,
page: {
@ -40,7 +62,42 @@ export default {
size: 10,
page: 1
},
query: {}
query: {
isType: 0,
tid: '',
query: ''
},
typeOptions: [
{
label: '全部',
value: 0
},
{
label: '档案',
value: 1
},
{
label: '档案盒',
value: 2
},
{
label: '层位',
value: 3
}
],
inputSelect: 'tid',
queryOptions: [
{
label: 'TID',
value: 'tid'
},
{
label: '标签名称',
value: 'tagName'
}
],
unbindVisible: false,
unbindBtnLoading: false
}
},
created() {
@ -60,16 +117,21 @@ export default {
Object.keys(this.query).length !== 0 && Object.keys(this.query).forEach(item => {
if (this.query[item] === null || this.query[item] === '') this.query[item] = undefined
})
return {
const params = {
page: this.page.page - 1,
size: this.page.size,
...this.query
}
if (params.isType === 0) {
params.isType = undefined
}
return params
},
clickRowHandler(row) {
this.$refs.table.toggleRowSelection(row)
},
unbind() {
this.unbindVisible = true
},
//
sizeChangeHandler(e) {
@ -81,6 +143,29 @@ export default {
pageChangeHandler(e) {
this.page.page = e
this.refresh()
},
selectionChangeHandler(val) {
this.selections = val
},
handleConfirm() {
console.log(1)
this.unbindVisible = false
this.unbindBtnLoading = true
const unbindData = this.selections.map((item) => {
return {
labelType: item.isType,
tid: item.tid
}
})
unbindTag(unbindData).then((res) => {
this.unbindBtnLoading = false
this.$notify({
title: '解除绑定成功',
type: 'success',
duration: 2500
})
this.initData()
})
}
}
}

Loading…
Cancel
Save