Explorar el Código

维多利亚bug解决

cz hace 2 años
padre
commit
3bf42a9a48

+ 1 - 1
src/components/WDLY/process/SendSubscribeWDLY.vue

@@ -98,7 +98,7 @@ let rules = ref({
     { required: true, message: "请选择要求到货时间", trigger: "change" },
   ],
   count: [{ required: true, message: "请输入申购数量", trigger: "blur" }],
-  remark: [{ required: true, message: "请输入申购备注", trigger: "blur" }],
+  // remark: [{ required: true, message: "请输入申购备注", trigger: "blur" }],
 });
 const formOption = reactive({
   inline: true,

+ 459 - 457
src/components/byForm/index.vue

@@ -1,509 +1,511 @@
 <template>
-	<div class="by-form">
-		<el-form
-			:model="formData"
-			:label-width="formOption.labelWidth"
-			:inline="formOption.inline || false"
-			:rules="rules"
-			:labelPosition="formOption.labelPosition || 'top'"
-			ref="byForm"
-			:disabled="formOption.disabled || false"
-		>
-			<el-form-item
-				:label="i.label"
-				v-for="i in formConfig"
-				:key="i.model"
-				:prop="i.prop"
-				v-show="i.isShow || i.isShow == undefined"
-				:style="
-					i.type == 'title'
-						? 'width:100%'
-						: i.itemWidth
-						? 'width:' + i.itemWidth + '%'
-						: formOption.itemWidth
-						? 'width:' + formOption.itemWidth + '%'
-						: '100%'
-				"
-				:class="i.isHide ? 'dn' : ''"
-			>
-				<el-input
-					v-if="i.type == 'input'"
-					v-model="formData[i.prop]"
-					:placeholder="i.placeholder || '请输入'"
-					@input="(e) => commonsEmit(e, i)"
-					:type="i.itemType ? i.itemType : 'text'"
-					:disabled="i.disabled ? i.disabled : false"
-					:max="i.max"
-					:min="i.min"
-					:maxlength="i.maxlength"
-					:readonly="i.readonly ? i.readonly : false"
-				/>
-				<el-input
-					v-if="i.type == 'selectInput'"
-					v-model="formData[i.prop]"
-					:placeholder="i.placeholder || '请输入'"
-					@input="(e) => commonsEmit(e, i)"
-					:type="i.itemType ? i.itemType : 'text'"
-					:disabled="i.disabled ? i.disabled : false"
-					:max="i.max"
-					:min="i.min"
-					:maxlength="i.maxlength"
-					:readonly="i.readonly ? i.readonly : false"
-				>
-					<template #prepend>
-						<el-select
-							v-model="formData[i.selectProp]"
-							:placeholder="i.selectPlaceholder || '请选择'"
-							@change="(e) => commonsEmit(e, i)"
-							:disabled="i.disabled ? i.disabled : false"
-							:readonly="i.readonly ? i.readonly : false"
-							style="width: 80px"
-						>
-							<el-option
-								:label="j.title || j.name || j.label"
-								:value="j.id || j.value"
-								v-for="j in i.data"
-								:key="j.id"
-							>
-							</el-option>
-						</el-select>
-					</template>
-				</el-input>
-				<el-select
-					v-model="formData[i.prop]"
-					:multiple="i.multiple || false"
-					v-else-if="i.type == 'select'"
-					:placeholder="i.placeholder || '请选择'"
-					@change="(e) => commonsEmit(e, i)"
-					:disabled="i.disabled ? i.disabled : false"
-					:filterable="i.filterable ? true : false"
-					:style="i.style"
-					:readonly="i.readonly ? i.readonly : false"
-				>
-					<el-option
-						:label="j.title || j.name || j.label"
-						:value="j.id || j.value"
-						v-for="j in i.data"
-						:key="j.id"
-					>
-					</el-option>
-				</el-select>
-				<el-tree-select
-					v-model="formData[i.prop]"
-					v-else-if="i.type == 'treeSelect'"
-					:data="i.data"
-					:readonly="i.readonly ? i.readonly : false"
-					:props="{
-						value: i.propsTreeValue || 'id',
-						label: i.propsTreeLabel || 'label',
-						children: i.propsTreeChildren || 'children',
-					}"
-					value-key="id"
-					:placeholder="i.placeholder || '请选择'"
-					check-strictly
-				/>
-				<el-date-picker
-					v-model="formData[i.prop]"
-					:readonly="i.readonly ? i.readonly : false"
-					v-else-if="i.type == 'date'"
-					:type="i.itemType"
-					:placeholder="i.placeholder || '请选择时间'"
-					@change="(e) => commonsEmit(e, i)"
-					:disabled="i.disabled ? i.disabled : false"
-					:format="i.format ? i.format : dateFormatInit(i.itemType)"
-					:value-format="
-						i.format ? i.format : dateFormatInit(i.itemType)
-					"
-				/>
-				<el-switch
-					:disabled="i.disabled ? i.disabled : false"
-					v-else-if="i.type == 'switch'"
-					:readonly="i.readonly ? i.readonly : false"
-					v-model="formData[i.prop]"
-				/>
-				<el-checkbox-group
-					v-else-if="i.type == 'checkbox'"
-					v-model="formData[i.prop]"
-					:readonly="i.readonly ? i.readonly : false"
-					:disabled="i.disabled ? i.disabled : false"
-				>
-					<el-checkbox
-						v-for="j in i.data"
-						:key="j.id || j.value"
-						:label="j.id || j.value"
-						name="type"
-					>
-						{{ j.name || j.label }}
-					</el-checkbox>
-				</el-checkbox-group>
-				<el-radio-group
-					v-else-if="i.type == 'radio'"
-					v-model="formData[i.prop]"
-					:readonly="i.readonly ? i.readonly : false"
-					:disabled="i.disabled ? i.disabled : false"
-				>
-					<el-radio
-						:border="i.border ? i.border : false"
-						v-for="j in i.data"
-						:key="j.id || j.value"
-						:label="j.id || j.value"
-						name="type"
-					>
-						{{ j.name || j.label }}
-					</el-radio>
-				</el-radio-group>
-				<el-input-number
-					v-else-if="i.type == 'number'"
-					v-model="formData[i.prop]"
-					:readonly="i.readonly ? i.readonly : false"
-					:placeholder="i.placeholder || '请输入'"
-					@change="(e) => commonsEmit(e, i)"
-					:disabled="i.disabled ? i.disabled : false"
-					:min="i.min ? i.min : 0"
-					:max="i.max ? i.max : 100"
-					:step="i.step ? i.step : 1"
-					:precision="i.precision !== '' ? i.precision : 2"
-					:controls="i.controls === false ? false : true"
-					:style="i.style"
-				>
-				</el-input-number>
-				<el-tree
-					v-else-if="i.type == 'tree'"
-					:data="i.data"
-					:props="i.props"
-					:readonly="i.readonly ? i.readonly : false"
-					:show-checkbox="i.showCheckbox || true"
-				>
-				</el-tree>
-				<el-cascader
-					v-else-if="i.type == 'cascader'"
-					:options="i.data"
-					:props="i.props"
-					:readonly="i.readonly ? i.readonly : false"
-					:placeholder="i.placeholder || '请选择'"
-					@change="(e) => commonsEmit(e, i)"
-					:disabled="i.disabled ? i.disabled : false"
-					:style="i.style"
-				>
-				</el-cascader>
-				<div class="form-title" v-else-if="i.type == 'title'">
-					{{ i.title }}
-				</div>
-				<slot :name="i.slotName" v-else-if="i.type == 'slot'">
-					{{ i.slotName }}插槽占位符
-				</slot>
-				<div class="upload" v-else-if="i.type == 'upload'" >
-					<el-upload
-						v-model="formData[i.prop]"
-						action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
-						:data="uploadData"
-						list-type="picture-card"
-						:on-remove="handleRemove"
-						:on-success="handleSuccess"
-						:before-upload="handleBeforeUpload"
-						
-					>
-						<!-- <el-icon class="el-icon--upload"><upload-filled /></el-icon> -->
-						<el-icon><Plus /></el-icon>
-					</el-upload>
-				</div>
-				<div v-else-if="i.type == 'table'" class="by-form-table" style="width:100%">
-					<el-table :data="formData[i.prop]" style="width: 100%">
-						<el-table-column :prop="j.prop" :label="j.label" :width="i.width" v-for='(j,jindex) in i.column'>
-							<template #default="scope" v-if="j.type">
-								<component 
-										@change="(e) => formTableChange(e,scope,j)" 
-										v-model="scope.row[j.prop]" 
-										:is="formTableObj[j.type]"
-										:placeholder="j.placeholder || '请输入'"
-										:type="j.type == 'number' ? 'number' : 'text'"
-									>
-									<el-option
-										:label="n.title || n.name || n.label"
-										:value="n.id || n.value"
-										v-for="n in j.data"
-										:key="n.id"
-										v-if="j.type == 'select'"
-									>
-									</el-option>
-								</component>
-							</template>
-						</el-table-column>
-						
-					</el-table>
-				</div>
-				<div v-else-if="i.type == 'json'" class="by-form-json">
-					<byForm
-						:formConfig="i.json"
-						:formOption="formOption"
-						v-model="formData[i.prop]"
-						ref="byform"
-						:rules="rules"
-					>
-					</byForm>
-				</div>
-			</el-form-item>
-		</el-form>
-	</div>
+  <div class="by-form">
+    <el-form
+      :model="formData"
+      :label-width="formOption.labelWidth"
+      :inline="formOption.inline || false"
+      :rules="rules"
+      :labelPosition="formOption.labelPosition || 'top'"
+      ref="byForm"
+      :disabled="formOption.disabled || false"
+    >
+      <el-form-item
+        :label="i.label"
+        v-for="i in formConfig"
+        :key="i.model"
+        :prop="i.prop"
+        v-show="i.isShow || i.isShow == undefined"
+        :style="
+          i.type == 'title'
+            ? 'width:100%'
+            : i.itemWidth
+            ? 'width:' + i.itemWidth + '%'
+            : formOption.itemWidth
+            ? 'width:' + formOption.itemWidth + '%'
+            : '100%'
+        "
+        :class="i.isHide ? 'dn' : ''"
+      >
+        <el-input
+          v-if="i.type == 'input'"
+          v-model="formData[i.prop]"
+          :placeholder="i.placeholder || '请输入'"
+          @input="(e) => commonsEmit(e, i)"
+          :type="i.itemType ? i.itemType : 'text'"
+          :disabled="i.disabled ? i.disabled : false"
+          :max="i.max"
+          :min="i.min"
+          :maxlength="i.maxlength"
+          :readonly="i.readonly ? i.readonly : false"
+        />
+        <el-input
+          v-if="i.type == 'selectInput'"
+          v-model="formData[i.prop]"
+          :placeholder="i.placeholder || '请输入'"
+          @input="(e) => commonsEmit(e, i)"
+          :type="i.itemType ? i.itemType : 'text'"
+          :disabled="i.disabled ? i.disabled : false"
+          :max="i.max"
+          :min="i.min"
+          :maxlength="i.maxlength"
+          :readonly="i.readonly ? i.readonly : false"
+        >
+          <template #prepend>
+            <el-select
+              v-model="formData[i.selectProp]"
+              :placeholder="i.selectPlaceholder || '请选择'"
+              @change="(e) => commonsEmit(e, i)"
+              :disabled="i.disabled ? i.disabled : false"
+              :readonly="i.readonly ? i.readonly : false"
+              style="width: 80px"
+            >
+              <el-option
+                :label="j.title || j.name || j.label"
+                :value="j.id || j.value"
+                v-for="j in i.data"
+                :key="j.id"
+              >
+              </el-option>
+            </el-select>
+          </template>
+        </el-input>
+        <el-select
+          v-model="formData[i.prop]"
+          :multiple="i.multiple || false"
+          v-else-if="i.type == 'select'"
+          :placeholder="i.placeholder || '请选择'"
+          @change="(e) => commonsEmit(e, i)"
+          :disabled="i.disabled ? i.disabled : false"
+          :filterable="i.filterable ? true : false"
+          :style="i.style"
+          :readonly="i.readonly ? i.readonly : false"
+        >
+          <el-option
+            :label="j.title || j.name || j.label"
+            :value="j.id || j.value"
+            v-for="j in i.data"
+            :key="j.id"
+          >
+          </el-option>
+        </el-select>
+        <el-tree-select
+          v-model="formData[i.prop]"
+          v-else-if="i.type == 'treeSelect'"
+          :data="i.data"
+          :readonly="i.readonly ? i.readonly : false"
+          :props="{
+            value: i.propsTreeValue || 'id',
+            label: i.propsTreeLabel || 'label',
+            children: i.propsTreeChildren || 'children',
+          }"
+          value-key="id"
+          :placeholder="i.placeholder || '请选择'"
+          check-strictly
+        />
+        <el-date-picker
+          v-model="formData[i.prop]"
+          :readonly="i.readonly ? i.readonly : false"
+          v-else-if="i.type == 'date'"
+          :type="i.itemType"
+          :placeholder="i.placeholder || '请选择时间'"
+          @change="(e) => commonsEmit(e, i)"
+          :disabled="i.disabled ? i.disabled : false"
+          :format="i.format ? i.format : dateFormatInit(i.itemType)"
+          :value-format="i.format ? i.format : dateFormatInit(i.itemType)"
+        />
+        <el-switch
+          :disabled="i.disabled ? i.disabled : false"
+          v-else-if="i.type == 'switch'"
+          :readonly="i.readonly ? i.readonly : false"
+          v-model="formData[i.prop]"
+        />
+        <el-checkbox-group
+          v-else-if="i.type == 'checkbox'"
+          v-model="formData[i.prop]"
+          :readonly="i.readonly ? i.readonly : false"
+          :disabled="i.disabled ? i.disabled : false"
+        >
+          <el-checkbox
+            v-for="j in i.data"
+            :key="j.id || j.value"
+            :label="j.id || j.value"
+            name="type"
+          >
+            {{ j.name || j.label }}
+          </el-checkbox>
+        </el-checkbox-group>
+        <el-radio-group
+          v-else-if="i.type == 'radio'"
+          v-model="formData[i.prop]"
+          :readonly="i.readonly ? i.readonly : false"
+          :disabled="i.disabled ? i.disabled : false"
+        >
+          <el-radio
+            :border="i.border ? i.border : false"
+            v-for="j in i.data"
+            :key="j.id || j.value"
+            :label="j.id || j.value"
+            name="type"
+          >
+            {{ j.name || j.label }}
+          </el-radio>
+        </el-radio-group>
+        <el-input-number
+          v-else-if="i.type == 'number'"
+          v-model="formData[i.prop]"
+          :readonly="i.readonly ? i.readonly : false"
+          :placeholder="i.placeholder || '请输入'"
+          @change="(e) => commonsEmit(e, i)"
+          :disabled="i.disabled ? i.disabled : false"
+          :min="i.min ? i.min : 0"
+          :max="i.max ? i.max : 100"
+          :step="i.step ? i.step : 1"
+          :precision="i.precision !== '' ? i.precision : 2"
+          :controls="i.controls === false ? false : true"
+          :style="i.style"
+        >
+        </el-input-number>
+        <el-tree
+          v-else-if="i.type == 'tree'"
+          :data="i.data"
+          :props="i.props"
+          :readonly="i.readonly ? i.readonly : false"
+          :show-checkbox="i.showCheckbox || true"
+        >
+        </el-tree>
+        <el-cascader
+          v-else-if="i.type == 'cascader'"
+          :options="i.data"
+          :props="i.props"
+          :readonly="i.readonly ? i.readonly : false"
+          :placeholder="i.placeholder || '请选择'"
+          @change="(e) => commonsEmit(e, i)"
+          :disabled="i.disabled ? i.disabled : false"
+          :style="i.style"
+        >
+        </el-cascader>
+        <div class="form-title" v-else-if="i.type == 'title'">
+          {{ i.title }}
+        </div>
+        <slot :name="i.slotName" v-else-if="i.type == 'slot'">
+          {{ i.slotName }}插槽占位符
+        </slot>
+        <div class="upload" v-else-if="i.type == 'upload'">
+          <el-upload
+            v-model="formData[i.prop]"
+            action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
+            :data="uploadData"
+            list-type="picture-card"
+            :on-remove="handleRemove"
+            :on-success="handleSuccess"
+            :before-upload="handleBeforeUpload"
+          >
+            <!-- <el-icon class="el-icon--upload"><upload-filled /></el-icon> -->
+            <el-icon><Plus /></el-icon>
+          </el-upload>
+        </div>
+        <div
+          v-else-if="i.type == 'table'"
+          class="by-form-table"
+          style="width: 100%"
+        >
+          <el-table :data="formData[i.prop]" style="width: 100%">
+            <el-table-column
+              :prop="j.prop"
+              :label="j.label"
+              :width="i.width"
+              v-for="(j, jindex) in i.column"
+            >
+              <template #default="scope" v-if="j.type">
+                <component
+                  @change="(e) => formTableChange(e, scope, j)"
+                  v-model="scope.row[j.prop]"
+                  :is="formTableObj[j.type]"
+                  :placeholder="j.placeholder || '请输入'"
+                  :type="j.type == 'number' ? 'number' : 'text'"
+                >
+                  <el-option
+                    :label="n.title || n.name || n.label"
+                    :value="n.id || n.value"
+                    v-for="n in j.data"
+                    :key="n.id"
+                    v-if="j.type == 'select'"
+                  >
+                  </el-option>
+                </component>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+        <div v-else-if="i.type == 'json'" class="by-form-json">
+          <byForm
+            :formConfig="i.json"
+            :formOption="formOption"
+            v-model="formData[i.prop]"
+            ref="byform"
+            :rules="rules"
+          >
+          </byForm>
+        </div>
+      </el-form-item>
+    </el-form>
+  </div>
 </template>
 <script>
 export default {
-	name: 'byForm',
-}
+  name: "byForm",
+};
 </script>
 <script  setup>
-import { set } from '@vueuse/shared'
-import { reactive } from 'vue'
+import { set } from "@vueuse/shared";
+import { reactive } from "vue";
 defineProps({
-	modelValue: {
-		type: Object,
-		default: false,
-	},
-	formConfig: {
-		type: Array,
-		default: false,
-	},
-	disabled: {
-		type: Boolean,
-		default: false,
-	},
-	formOption: {
-		type: Object,
-		default: false,
-	},
-	rules: {
-		type: Object,
-		default: false,
-	},
-})
-const formTableChange = (e,scope,column) => {
-	if(column.fn) {
-		column.fn(e,scope)
-	}
-	console.log(formData)
-	console.log(e,scope)
-}
+  modelValue: {
+    type: Object,
+    default: false,
+  },
+  formConfig: {
+    type: Array,
+    default: false,
+  },
+  disabled: {
+    type: Boolean,
+    default: false,
+  },
+  formOption: {
+    type: Object,
+    default: false,
+  },
+  rules: {
+    type: Object,
+    default: false,
+  },
+});
+const formTableChange = (e, scope, column) => {
+  if (column.fn) {
+    column.fn(e, scope);
+  }
+  console.log(formData);
+  console.log(e, scope);
+};
 const formTableObj = {
-	number:'el-input',
-	text:'el-input',
-	select:'el-select',
-	input:"el-input",
-
-}
-const fileList = ref([])
-const fileListCopy = ref([])
-const uploadData = ref({})
+  number: "el-input",
+  text: "el-input",
+  select: "el-select",
+  input: "el-input",
+};
+const fileList = ref([]);
+const fileListCopy = ref([]);
+const uploadData = ref({});
 //文件上传相关方法
 const handleSuccess = (res, file, files) => {
-	emit('update:modelValue', formData.value)
-}
+  emit("update:modelValue", formData.value);
+};
 
 const handleRemove = (file) => {
-	const index = fileListCopy.value.findIndex(
-		(x) => x.uid === file.uid || x.id === file.id
-	)
-	fileListCopy.value.splice(index, 1)
-}
+  const index = fileListCopy.value.findIndex(
+    (x) => x.uid === file.uid || x.id === file.id
+  );
+  fileListCopy.value.splice(index, 1);
+};
 
 const handleBeforeUpload = async (file) => {
-	const res = await proxy.post('/fileInfo/getSing', { fileName: file.name })
-	uploadData.value = res.uploadBody
-	fileListCopy.value.push({
-		id: res.id,
-		fileName: res.fileName,
-		path: res.fileUrl,
-		url: res.fileUrl,
-		uid: file.uid,
-	})
-}
+  const res = await proxy.post("/fileInfo/getSing", { fileName: file.name });
+  uploadData.value = res.uploadBody;
+  fileListCopy.value.push({
+    id: res.id,
+    fileName: res.fileName,
+    path: res.fileUrl,
+    url: res.fileUrl,
+    uid: file.uid,
+  });
+};
 
-const isInit = ref(false)
-const { proxy } = getCurrentInstance()
-const emit = defineEmits(['update:modelValue'])
+const isInit = ref(false);
+const { proxy } = getCurrentInstance();
+const emit = defineEmits(["update:modelValue"]);
 const formData = computed(() => {
-	return proxy.modelValue
-})
-const formDataReset = ref({ ...proxy.modelValue })
+  return proxy.modelValue;
+});
+const formDataReset = ref({ ...proxy.modelValue });
 const commonsEmit = (prop, item) => {
-	if (item.fn) {
-		item.fn(prop)
-	}
-	emit('update:modelValue', formData.value)
-}
+  if (item.fn) {
+    item.fn(prop);
+  }
+  emit("update:modelValue", formData.value);
+};
 const loadInit = () => {
-	const v = this
-	for (let i = 0; i < proxy.formConfig.length; i++) {
-		const element = proxy.formConfig[i]
-		if (element.isLoad) {
-			commonGetdata(element.isLoad, i)
-		}
-	}
-}
+  const v = this;
+  for (let i = 0; i < proxy.formConfig.length; i++) {
+    const element = proxy.formConfig[i];
+    if (element.isLoad) {
+      commonGetdata(element.isLoad, i);
+    }
+  }
+};
 const dateFormatInit = (itemType) => {
-	const formatObj = {
-		year: 'YYYY',
-		month: 'YYYY-MM',
-		date: 'YYYY-MM-DD hh:mm:ss',
-		dates: 'YYYY-MM-DD',
-		datetime: 'YYYY-MM-DD hh:mm:ss',
-		monthrange: 'YYYY-MM-DD hh:mm:ss',
-		datetimerange: 'YYYY-MM-DD hh:mm:ss',
-		daterange: 'YYYY-MM-DD hh:mm:ss',
-	}
-	return formatObj[itemType]
-}
+  const formatObj = {
+    year: "YYYY",
+    month: "YYYY-MM",
+    date: "YYYY-MM-DD hh:mm:ss",
+    dates: "YYYY-MM-DD",
+    datetime: "YYYY-MM-DD hh:mm:ss",
+    monthrange: "YYYY-MM-DD hh:mm:ss",
+    datetimerange: "YYYY-MM-DD hh:mm:ss",
+    daterange: "YYYY-MM-DD hh:mm:ss",
+  };
+  return formatObj[itemType];
+};
 
 //公用递归,保证key,val统一
 const commonRecursive = (arr, labelKey, labelVal, childrenName) => {
-	for (let i = 0; i < arr.length; i++) {
-		if (labelKey == 'stringArray') {
-			arr[i] = {
-				label: arr[i],
-				value: arr[i],
-				id: arr[i],
-				title: arr[i],
-			}
-		} else {
-			arr[i].title = arr[i].label = arr[i][labelKey]
-			arr[i].id = arr[i].value = arr[i][labelVal]
-		}
+  for (let i = 0; i < arr.length; i++) {
+    if (labelKey == "stringArray") {
+      arr[i] = {
+        label: arr[i],
+        value: arr[i],
+        id: arr[i],
+        title: arr[i],
+      };
+    } else {
+      arr[i].title = arr[i].label = arr[i][labelKey];
+      arr[i].id = arr[i].value = arr[i][labelVal];
+    }
 
-		if (childrenName) {
-			arr[i].children = arr[i][childrenName]
-		}
-		arr[i].checked = false
-		typeof arr[i][labelVal] == String
-			? (arr[i].key = arr[i][labelVal])
-			: (arr[i].key = JSON.stringify(arr[i][labelVal]))
-		if (childrenName) {
-			this.commonRecursive(
-				arr[i][childrenName],
-				labelKey,
-				labelVal,
-				childrenName
-			)
-		}
-	}
-}
+    if (childrenName) {
+      arr[i].children = arr[i][childrenName];
+    }
+    arr[i].checked = false;
+    typeof arr[i][labelVal] == String
+      ? (arr[i].key = arr[i][labelVal])
+      : (arr[i].key = JSON.stringify(arr[i][labelVal]));
+    if (childrenName) {
+      this.commonRecursive(
+        arr[i][childrenName],
+        labelKey,
+        labelVal,
+        childrenName
+      );
+    }
+  }
+};
 
 //请求form表单所需数据字典
 const commonGetdata = (isLoad, i) => {
-	proxy[isLoad.method](isLoad.url, isLoad.req).then((message) => {
-		console.log(message)
-		if (getFormat(isLoad.resUrl, message) == undefined) {
-			console.log('请查看isLoad配置是否正确url:' + isLoad.url)
-			return
-		}
-		proxy.formConfig[i].data = getFormat(isLoad.resUrl, message)
-		if (isLoad.labelKey) {
-			commonRecursive(
-				proxy.formConfig[i].data,
-				isLoad.labelKey,
-				isLoad.labelVal,
-				isLoad.childrenName
-			)
-		}
-		console.log(proxy.formConfig[i].data)
-	})
-}
+  proxy[isLoad.method](isLoad.url, isLoad.req).then((message) => {
+    console.log(message);
+    if (getFormat(isLoad.resUrl, message) == undefined) {
+      console.log("请查看isLoad配置是否正确url:" + isLoad.url);
+      return;
+    }
+    proxy.formConfig[i].data = getFormat(isLoad.resUrl, message);
+    if (isLoad.labelKey) {
+      commonRecursive(
+        proxy.formConfig[i].data,
+        isLoad.labelKey,
+        isLoad.labelVal,
+        isLoad.childrenName
+      );
+    }
+    console.log(proxy.formConfig[i].data);
+  });
+};
 
 //根据resurl获取数据
 const getFormat = (formatStr, props) => {
-	if (!formatStr) return props
-	return formatStr
-		.split('.')
-		.reduce((total, cur) => (!total ? '' : total[cur]), props)
-}
+  if (!formatStr) return props;
+  return formatStr
+    .split(".")
+    .reduce((total, cur) => (!total ? "" : total[cur]), props);
+};
 
 //初始化所有表单
 
 const formDataInit = () => {
-	var map = {
-		input: '',
-		radio: null,
-		select: null,
-		checkbox: [],
-		date: '',
-		datetime: '',
-		daterange: [],
-		datetimerange: [],
-		year: null,
-		month: null,
-		switch: false,
-		inputNumber: 0,
-		cascader: [],
-		Solt: null,
-		Transfer: [],
-		Upload: { path: null, id: null, name: null },
-		password: '',
-		treeSelect: '',
-		json: {},
-	}
-	const formDataCopy = { ...formData.value }
-	for (let i = 0; i < proxy.formConfig.length; i++) {
-		const element = proxy.formConfig[i]
+  var map = {
+    input: "",
+    radio: null,
+    select: null,
+    checkbox: [],
+    date: "",
+    datetime: "",
+    daterange: [],
+    datetimerange: [],
+    year: null,
+    month: null,
+    switch: false,
+    inputNumber: 0,
+    cascader: [],
+    Solt: null,
+    Transfer: [],
+    Upload: { path: null, id: null, name: null },
+    password: "",
+    treeSelect: "",
+    json: {},
+  };
+  const formDataCopy = { ...formData.value };
+  for (let i = 0; i < proxy.formConfig.length; i++) {
+    const element = proxy.formConfig[i];
 
-		if (formDataCopy[element.prop] || element.type === 'slot') {
-			continue
-		}
+    if (formDataCopy[element.prop] || element.type === "slot") {
+      continue;
+    }
 
-		if (map[element.itemType] != undefined) {
-			formData.value[element.prop] = map[element.itemType]
-		} else {
-			formData.value[element.prop] = element.multiple
-				? []
-				: map[element.type]
-		}
-	}
+    if (map[element.itemType] != undefined) {
+      formData.value[element.prop] = map[element.itemType];
+    } else {
+      formData.value[element.prop] = element.multiple ? [] : map[element.type];
+    }
+  }
 
-	emit('update:modelValue', formData.value)
-}
+  emit("update:modelValue", formData.value);
+};
 
 const handleSubmit = async (onSubmit) => {
-	try {
-		const flag = await proxy.$refs['byForm'].validate()
-		if (flag) {
-			const form = { ...formData.value }
-			proxy.formConfig.map((item) => {
-				if (item.type == 'json') {
-					form[item.prop] = JSON.stringify(form[item.prop])
-				}
-			})
-			emit('update:modelValue', form)
-			onSubmit()
-			return true
-		}
-	} catch (err) {
-		console.log('请检查表单!')
-		return false
-	}
-}
-const byform = ref(null) // 延迟使用,因为还没有返回跟挂载
-onMounted(() => {})
+  try {
+    const flag = await proxy.$refs["byForm"].validate();
+    if (flag) {
+      const form = { ...formData.value };
+      proxy.formConfig.map((item) => {
+        if (item.type == "json") {
+          form[item.prop] = JSON.stringify(form[item.prop]);
+        }
+      });
+      emit("update:modelValue", form);
+      onSubmit();
+      return true;
+    }
+  } catch (err) {
+    console.log("请检查表单!", err);
+    return false;
+  }
+};
+const byform = ref(null); // 延迟使用,因为还没有返回跟挂载
+onMounted(() => {});
 defineExpose({
-	handleSubmit,
-})
-formDataInit()
-loadInit()
+  handleSubmit,
+});
+formDataInit();
+loadInit();
 </script>
 
 <style>
 .form-title {
-	font-size: 14px;
-	font-weight: bold;
-	margin-top: 22px;
-	color: #333333;
+  font-size: 14px;
+  font-weight: bold;
+  margin-top: 22px;
+  color: #333333;
 }
 .by-form .el-form--inline .el-form-item {
-	margin-right: 0px;
-	padding-right: 32px;
-	box-sizing: border-box;
+  margin-right: 0px;
+  padding-right: 32px;
+  box-sizing: border-box;
 }
 
 .dn {
-	display: none !important;
+  display: none !important;
 }
 .by-form-json .by-form .el-form .el-form-item {
-	margin-bottom: 18px;
+  margin-bottom: 18px;
 }
 </style>

+ 7 - 2
src/components/process/SendSubscribe.vue

@@ -94,7 +94,12 @@
         </el-table>
       </el-form-item>
     </el-form>
-    <el-dialog v-model="openProduct" title="选择货品" width="70%" append-to-body>
+    <el-dialog
+      v-model="openProduct"
+      title="选择货品"
+      width="70%"
+      append-to-body
+    >
       <SelectGoods
         @cancel="openProduct = false"
         @pushGoods="pushGoods"
@@ -128,7 +133,7 @@ let rules = ref({
   //   { required: true, message: "请输入申购事由", trigger: "blur" },
   // ],
   count: [{ required: true, message: "请输入申购数量", trigger: "blur" }],
-  remark: [{ required: true, message: "请输入备注", trigger: "blur" }],
+  // remark: [{ required: true, message: "请输入备注", trigger: "blur" }],
 });
 
 let openProduct = ref(false);

+ 37 - 18
src/views/WDLY/basic/product/index.vue

@@ -80,17 +80,12 @@
         </template>
 
         <template #combination>
-          <el-form
-            ref="tableForm"
-            :model="formData.data"
-            :rules="rules"
-            style="margin-top: 15px"
-          >
+          <div>
             <div
               style="
                 font-size: 14px;
                 font-weight: bold;
-                margin-top: 22px;
+                margin-bottom: 10px;
                 color: #333333;
               "
               v-show="formData.data.combination == 1"
@@ -137,7 +132,7 @@
                 </template>
               </el-table-column>
             </el-table>
-          </el-form>
+          </div>
         </template>
         <template #one>
           <div style="width: 100%">
@@ -417,6 +412,9 @@ const config = computed(() => {
         label: "生命周期",
         prop: "lifeCycle",
       },
+      render(lifeCycle) {
+        return lifeCycle == "1" ? "新品" : lifeCycle == "2" ? "成长" : "成熟";
+      },
     },
     {
       attrs: {
@@ -631,7 +629,7 @@ const formConfig = computed(() => {
           prop: "clearancePeriod",
           label: "库存清空期限",
           itemWidth: 50,
-          format: "YYYY-MM-DD",
+          format: "MM-DD",
         },
       ],
     },
@@ -756,22 +754,23 @@ const select = (_selection, row) => {
 const tree = ref(null);
 const submitForm = () => {
   byform.value.handleSubmit((valid) => {
+    const list = formData.data.productCombinationList;
+    let jsonObj = JSON.parse(formData.data.victoriatouristJson);
     if (formData.data.combination == 1) {
-      if (!(formData.data.productCombinationList.length > 0)) {
+      if (!(list.length > 0)) {
+        formData.data.victoriatouristJson = jsonObj;
         return ElMessage({
           message: "请添加组合明细",
           type: "info",
         });
       }
     }
-    formData.data.victoriatouristJson.productCombinationList =
-      formData.data.productCombinationList;
-    formData.data.victoriatouristJson.combination = formData.data.combination;
+    formData.data.victoriatouristJson = jsonObj;
+    jsonObj.productCombinationList = list;
+    jsonObj.combination = formData.data.combination;
     delete formData.data.productCombinationList;
     delete formData.data.combination;
-    formData.data.victoriatouristJson = JSON.stringify(
-      formData.data.victoriatouristJson
-    );
+    formData.data.victoriatouristJson = JSON.stringify(jsonObj);
     formData.data.fileList = fileListCopy.value.map((x) => ({
       id: x.id,
       fileName: x.fileName,
@@ -832,8 +831,8 @@ const getDtl = (row) => {
       ? JSON.parse(res.victoriatouristJson)
       : {};
     res.combination = res.victoriatouristJson.combination
-      ? res.victoriatouristJson.combination
-      : 0 + "";
+      ? res.victoriatouristJson.combination + ""
+      : "0";
     res.productCombinationList = res.victoriatouristJson.productCombinationList;
     formData.data = res;
     dialogVisible.value = true;
@@ -978,4 +977,24 @@ const submitMove = () => {
   cursor: pointer;
   vertical-align: middle;
 }
+:deep(.el-date-picker-header) {
+  span:nth-child(3) {
+    display: none !important;
+  }
+  button:nth-child(1) {
+    display: none !important;
+  }
+  button:nth-child(5) {
+    display: none !important;
+  }
+}
+:deep(.el-date-picker__prev-btn .el-picker-panel__icon-btn) {
+  display: none;
+}
+:deep(.el-date-picker__next-btn .el-picker-panel__icon-btn) {
+  display: none;
+}
+:deep(.el-date-picker__header .el-date-picker__header-label) {
+  display: none;
+}
 </style>

+ 212 - 187
src/views/WDLY/outInBound/logistics/index.vue

@@ -37,86 +37,43 @@
       </byTable>
     </div>
     <el-dialog
-      :title="modalType == 'add' ? '添加物流数据' : '调仓接收'"
+      :title="modalType == 'add' ? '添加物流数据' : '编辑物流数据'"
       v-model="dialogVisible"
       width="800"
       v-loading="loading"
     >
       <byForm
+        v-if="modalType != 'other'"
         :formConfig="formConfig"
         :formOption="formOption"
         v-model="formData.data"
         :rules="rules"
         ref="byform"
       >
-        <template #products>
+      </byForm>
+      <byForm
+        v-else
+        :formConfig="formConfigOne"
+        :formOption="formOption"
+        v-model="formData.data"
+        :rules="rules"
+        ref="byform"
+      >
+        <template #detailSlot>
           <div style="width: 100%">
-            <el-button
-              type="primary"
-              @click="openProduct = true"
-              style="margin-bottom: 10px"
-            >
-              添加物品
-            </el-button>
-            <el-table :data="formData.data.stockWaitDetailsList">
-              <el-table-column prop="name" label="物品编码" />
-              <el-table-column prop="name" label="物品名称" />
-              <el-table-column prop="name" label="规格型号" />
+            <el-table :data="formData.data.arrivalDetailList">
               <el-table-column
-                prop="name"
-                label="调仓数量"
-                v-if="modalType == 'edit'"
+                prop="productType"
+                label="货品类型"
+                :formatter="(row) => (row.productType == 1 ? '产品' : '物料')"
               />
-              <el-table-column
-                prop="quantity"
-                label="调仓数量"
-                min-width="150"
-                v-if="modalType == 'add'"
-              >
-                <template #default="{ row, $index }">
-                  <el-form-item
-                    :prop="'stockWaitDetailsList.' + $index + '.quantity'"
-                    :rules="rules.quantity"
-                    :inline-message="true"
-                  >
-                    <el-input-number
-                      v-model="row.quantity"
-                      :precision="4"
-                      :controls="false"
-                      :min="0"
-                    />
-                  </el-form-item>
-                </template>
-              </el-table-column>
-              <el-table-column
-                prop="quantity"
-                label="接收数量"
-                min-width="150"
-                v-if="modalType == 'edit'"
-              >
-                <template #default="{ row, $index }">
-                  <el-form-item
-                    :prop="'stockWaitDetailsList.' + $index + '.quantity'"
-                    :rules="rules.quantity"
-                    :inline-message="true"
-                  >
-                    <el-input-number
-                      v-model="row.quantity"
-                      :precision="4"
-                      :controls="false"
-                      :min="0"
-                    />
-                  </el-form-item>
-                </template>
-              </el-table-column>
-
-              <el-table-column prop="zip" label="操作" width="100">
-                <template #default="{ $index }">
-                  <el-button type="primary" link @click="handleRemove($index)"
-                    >删除</el-button
-                  >
-                </template>
-              </el-table-column>
+              <el-table-column prop="productCode" label="货品编码" />
+              <el-table-column prop="productName" label="货品名称" />
+              <el-table-column prop="productSpec" label="规格型号" />
+              <el-table-column prop="productUnit" label="单位" />
+              <el-table-column prop="count" label="采购数量" />
+              <el-table-column prop="transitQuantity" label="剩余在途" />
+              <el-table-column prop="deliverGoodsQuantity" label="本次到货" />
             </el-table>
           </div>
         </template>
@@ -133,19 +90,6 @@
         </el-button>
       </template>
     </el-dialog>
-    <el-dialog
-      v-model="openProduct"
-      title="选择产品"
-      width="70%"
-      append-to-body
-    >
-      <SelectProduct @handleSelect="handleSelect"></SelectProduct>
-      <template #footer>
-        <span class="dialog-footer">
-          <el-button @click="openProduct = false">取消</el-button>
-        </span>
-      </template>
-    </el-dialog>
 
     <el-dialog title="物流数据" v-model="openRecord" width="40%" top="50px">
       <!-- <div style="padding-left: 40px; margin-bottom: 20px">
@@ -177,7 +121,6 @@ import byForm from "@/components/byForm/index";
 import { computed, defineComponent, ref } from "vue";
 import useUserStore from "@/store/modules/user";
 import SelectProduct from "@/components/WDLY/product/SelectProduct";
-
 const loading = ref(false);
 const submitLoading = ref(false);
 const sourceList = ref({
@@ -192,7 +135,6 @@ let dialogVisible = ref(false);
 let openProduct = ref(false);
 let openRecord = ref(false);
 const activities = ref([]);
-
 let roomDialogVisible = ref(false);
 let modalType = ref("add");
 let rules = ref({
@@ -206,6 +148,70 @@ let rules = ref({
   isKd100: [{ required: true, message: "请选择是否同步", trigger: "change" }],
 });
 const { proxy } = getCurrentInstance();
+const statusData = ref([
+  {
+    label: "在途",
+    value: "0",
+  },
+  {
+    label: "揽收",
+    value: "1",
+  },
+  {
+    label: "疑难",
+    value: "2",
+  },
+  {
+    label: "签收",
+    value: "3",
+  },
+  {
+    label: "退签",
+    value: "4",
+  },
+  {
+    label: "派件",
+    value: "5",
+  },
+  {
+    label: "退回",
+    value: "6",
+  },
+  {
+    label: "转投",
+    value: "7",
+  },
+  {
+    label: "清关",
+    value: "8",
+  },
+  {
+    label: "拒签",
+    value: "14",
+  },
+  {
+    label: "完成",
+    value: "15",
+  },
+]);
+const businessType = ref([
+  {
+    dictValue: "采购入库",
+    dictKey: "1",
+  },
+  {
+    dictValue: "京东订单出库",
+    dictKey: "2",
+  },
+  {
+    dictValue: "销售订单出库",
+    dictKey: "3",
+  },
+  {
+    dictValue: "京东退货",
+    dictKey: "4",
+  },
+]);
 const selectConfig = reactive([
   {
     label: "数据来源",
@@ -215,28 +221,9 @@ const selectConfig = reactive([
   {
     label: "物流状态",
     prop: "logisticsStatus",
-    data: [],
-  },
-  {
-    label: "完成状态",
-    prop: "status",
-    data: [
-      {
-        label: "待接收",
-        value: "1",
-      },
-      {
-        label: "部分接收",
-        value: "2",
-      },
-      {
-        label: "已接收",
-        value: "2",
-      },
-    ],
+    data: statusData.value,
   },
 ]);
-
 const config = computed(() => {
   return [
     {
@@ -273,6 +260,10 @@ const config = computed(() => {
         label: "物流状态",
         prop: "logisticsStatus",
       },
+      render(logisticsStatus) {
+        let current = statusData.value.find((x) => x.value == logisticsStatus);
+        return current ? current.label : "异常";
+      },
     },
     {
       attrs: {
@@ -309,7 +300,7 @@ const config = computed(() => {
             },
             el: "button",
             click() {
-              getDtl(row);
+              editStatus(row);
             },
           },
           {
@@ -320,7 +311,7 @@ const config = computed(() => {
             },
             el: "button",
             click() {
-              getDtl(row);
+              handleArrival(row);
             },
           },
         ];
@@ -328,7 +319,6 @@ const config = computed(() => {
     },
   ];
 });
-
 let formData = reactive({
   data: {},
   treeData: [],
@@ -383,6 +373,37 @@ const formConfig = reactive([
     itemType: "textarea",
   },
 ]);
+const formConfigOne = reactive([
+  {
+    type: "input",
+    prop: "supplyName",
+    label: "供应商",
+    disabled: true,
+    itemWidth: 50,
+  },
+  {
+    type: "input",
+    prop: "purchaseCode",
+    label: "采购单号",
+    disabled: true,
+    itemWidth: 50,
+  },
+  {
+    type: "select",
+    label: "物流/快递单号",
+    prop: "deliverGoodsId",
+    itemWidth: 50,
+    style: {
+      width: "100%",
+    },
+  },
+  {
+    type: "slot",
+    slotName: "detailSlot",
+    label: "发货明细",
+  },
+]);
+
 const getList = async (req) => {
   sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
   loading.value = true;
@@ -400,6 +421,7 @@ const getList = async (req) => {
 const openModal = () => {
   dialogVisible.value = true;
   modalType.value = "add";
+  formConfig[0].disabled = false;
   formData.data = {
     isKd100: "1",
   };
@@ -426,40 +448,37 @@ const submitForm = () => {
 
 const getDtl = (row) => {
   modalType.value = "edit";
-  proxy.post("/productSpu/detail", { id: row.id }).then((res) => {
-    res.stockWaitDetailsList = res.productInfoList;
-    formData.data = res;
+  proxy.post("/logisticsInfos/detail", { id: row.id }).then((res) => {
+    formConfig[0].disabled = true;
+    formData.data = {
+      businessType: res.businessType + "",
+      logisticsCompanyCode: res.logisticsCompanyCode,
+      code: res.code,
+      isKd100: res.isKd100 + "",
+      remark: "",
+    };
     dialogVisible.value = true;
   });
 };
-
-const warehouseList = ref([]);
-const warehouseListData = () => {
-  // // 币种数据
-  proxy
-    .post("/warehouse/page", {
-      pageNum: 1,
-      pageSize: 10,
-    })
-    .then((message) => {
-      warehouseList.value = message.rows;
-      formConfig[1].data = message.rows.map((x) => ({
-        label: x.name,
-        value: x.id,
-      }));
-      formConfig[2].data = message.rows.map((x) => ({
-        label: x.name,
-        value: x.id,
-      }));
-      selectConfig[0].data = message.rows.map((x) => ({
-        label: x.name,
-        value: x.id,
-      }));
-      selectConfig[1].data = message.rows.map((x) => ({
-        label: x.name,
-        value: x.id,
-      }));
-    });
+const editStatus = (row) => {
+  ElMessageBox.confirm("是否确定进行此操作?", "提示", {
+    confirmButtonText: "确定",
+    cancelButtonText: "取消",
+    type: "warning",
+  }).then(() => {
+    // 删除
+    proxy
+      .post("/logisticsInfos/dataInfoEdit", {
+        id: row.id,
+      })
+      .then((res) => {
+        ElMessage({
+          message: "更新成功",
+          type: "success",
+        });
+        getList();
+      });
+  });
 };
 
 const logisticsData = ref([]);
@@ -473,66 +492,72 @@ const getLogisticsData = (row) => {
   });
 };
 
-getList();
-getLogisticsData();
-
-const handleSelect = (row) => {
-  const flag = formData.data.stockWaitDetailsList.some((x) => x.id === row.id);
-  if (flag)
-    return ElMessage({
-      message: "该物品已选择",
-      type: "info",
-    });
-  formData.data.stockWaitDetailsList.push({
-    name: row.name,
-    code: row.code,
-    id: row.id,
-  });
-  return ElMessage({
-    message: "选择成功",
-    type: "success",
-  });
-};
-
-const handleRemove = (index) => {
-  formData.data.stockWaitDetailsList.splice(index, 1);
-  return ElMessage({
-    message: "删除成功",
-    type: "success",
-  });
-};
-
 const handleClickCode = (row) => {
-  ElMessage({
-    message: "数据请求中,请稍后!",
-    type: "success",
-  });
+  // ElMessage({
+  //   message: "数据请求中,请稍后!",
+  //   type: "success",
+  // });
   let id = row.id;
   proxy.post("/logisticsInfos/getLogistics", { id }).then((res) => {
     console.log(res, "wss");
+    openRecord.value = true;
   });
-  openRecord.value = true;
 };
 
-const businessType = ref([
-  {
-    dictValue: "采购入库",
-    dictKey: "1",
-  },
-  {
-    dictValue: "京东订单出库",
-    dictKey: "2",
-  },
-  {
-    dictValue: "销售订单出库",
-    dictKey: "3",
-  },
-  {
-    dictValue: "京东退货",
-    dictKey: "4",
-  },
-]);
+const handleArrival = (row) => {
+  modalType.value = "other";
+  proxy.post("/deliverGoods/list", { id: row.businessId }).then((res) => {
+    console.log(res, "ass");
+    formConfig[2].data = res.map((x) => ({
+      ...x,
+      label: x.code,
+      value: x.id,
+    }));
+    formData.data = {
+      businessId: row.id,
+      supplyName: row.supplyName,
+      purchaseCode: row.businessCode,
+      supplyId: row.supplyId,
+      code: "",
+      logisticsCompanyCode: "",
+      deliverGoodsId: "",
+      arrivalDetailList: [],
+    };
+    dialogVisible.value = true;
+  });
+};
+
+watch(
+  () => formData.data.deliverGoodsId,
+  (val) => {
+    if (val) {
+      const current = deliverData.value.find((x) => x.id === val);
+      formData.data.logisticsCompanyCode = current
+        ? current.logisticsCompanyCode
+        : "";
+      formData.data.code = current ? current.code : "";
+      // formData.data.logisticsCompanyName = current ? current.logisticsCompanyCode : "";
+      proxy.post("/deliverGoods/detail", { id: val }).then((res) => {
+        formData.data.arrivalDetailList = res.map((x) => ({
+          count: x.count,
+          productName: x.name,
+          productSpec: x.spec,
+          productUnit: x.unit,
+          productType: x.type,
+          productCode: x.code,
+          bussinessId: x.id,
+          purchaseDetailId: x.purchaseDetailId,
+          deliverGoodsDetailsId: x.deliverGoodsId,
+          transitQuantity: x.transitQuantity,
+          deliverGoodsQuantity: x.deliverGoodsQuantity,
+        }));
+      });
+    }
+  }
+);
 
+getList();
+getLogisticsData();
 onMounted(() => {
   selectConfig[0].data = businessType.value.map((x) => ({
     label: x.dictValue,

+ 12 - 4
src/views/WDLY/outInBound/waitInBound/index.vue

@@ -137,14 +137,14 @@ const config = computed(() => {
         label: "数据来源",
         prop: "businessType",
       },
-      // render(type) {
-      //   return proxy.dictDataEcho(type, warehouseType.value);
-      // },
+      render(type) {
+        return businessType.find((x) => x.value == type).label;
+      },
     },
     {
       attrs: {
         label: "单号",
-        prop: "businessCode",
+        prop: "code",
       },
     },
 
@@ -355,6 +355,14 @@ const getDict = () => {
       }));
     });
 };
+
+const businessType = [
+  { label: "线边回仓", value: "1" },
+  { label: "完工入库", value: "2" },
+  { label: "采购到货", value: "3" },
+  { label: "退货出库", value: "4" },
+];
+
 getList();
 getDict();
 onMounted(() => {

+ 8 - 4
src/views/WDLY/purchaseManage/alreadyPurchase/index.vue

@@ -227,7 +227,10 @@ const config = computed(() => {
     {
       attrs: {
         label: "采购金额",
-        prop: "remarks",
+        prop: "amount",
+      },
+      render(amount) {
+        return proxy.moneyFormat(amount, 2);
       },
     },
     {
@@ -327,7 +330,7 @@ const formOption = reactive({
   itemWidth: 100,
 });
 const byform = ref(null);
-let formConfig = reactive();
+let formConfig = reactive([]);
 const configData = [
   [
     {
@@ -413,7 +416,6 @@ const getList = async (req) => {
 
 const submitForm = () => {
   byform.value.handleSubmit((valid) => {
-    loading.value = true;
     if (modalType.value === "add") {
       const list = formData.data.deliverGoodsDetailsList;
       const total = list.reduce(
@@ -430,7 +432,7 @@ const submitForm = () => {
         const e = list[i];
         if (
           Number(e.alreadyDeliverGoodsQuantity) +
-            Number(e.deliverGoodsQuantity) >=
+            Number(e.deliverGoodsQuantity) >
           Number(e.count)
         ) {
           return ElMessage({
@@ -439,6 +441,7 @@ const submitForm = () => {
           });
         }
       }
+      loading.value = true;
       formData.data.deliverGoodsDetailsList = list.map((x) => ({
         purchaseDetailId: x.purchaseDetailId,
         deliverGoodsQuantity: x.deliverGoodsQuantity,
@@ -453,6 +456,7 @@ const submitForm = () => {
         getList();
       });
     } else if (modalType.value === "edit") {
+      loading.value = true;
       formData.data.arrivalDetailList = formData.data.arrivalDetailList.map(
         (x) => ({
           bussinessId: x.bussinessId,

+ 3 - 2
src/views/oa/mailList/outside/index.vue

@@ -22,12 +22,13 @@
         @get-list="getList"
       >
         <template #phoneNumber="{ item }">
-          <div>
+          {{ item.phoneNumber }}
+          <!-- <div>
             <span v-for="(x, index) in getTypeData(item, 0)">
               {{ x.contactNumber }}
               <span v-if="index < getTypeData(item, 0).length - 1">,</span>
             </span>
-          </div>
+          </div> -->
         </template>
         <template #email="{ item }">
           <div>

+ 1 - 1
src/views/process/processApproval/index.vue

@@ -171,7 +171,7 @@ const flowForm = reactive({
   data: {},
 });
 const flowRules = reactive({
-  remark: [{ required: true, message: "请输入处理意见", trigger: "blur" }],
+  // remark: [{ required: true, message: "请输入处理意见", trigger: "blur" }],
 });
 //组件实例
 const { proxy } = getCurrentInstance();

+ 90 - 18
src/views/salesMange/saleContract/claim/index.vue

@@ -40,16 +40,16 @@
               >选择合同</el-button
             >
             <el-table :data="formData.data.claimContractList">
-              <el-table-column prop="productCode" label="合同编码" />
-              <el-table-column prop="quantity" label="关联金额" min-width="150">
+              <el-table-column prop="contractCode" label="合同编码" />
+              <el-table-column prop="money" label="关联金额" min-width="150">
                 <template #default="{ row, $index }">
                   <el-form-item
-                    :prop="'claimContractList.' + $index + '.quantity'"
-                    :rules="rules.quantity"
+                    :prop="'claimContractList.' + $index + '.money'"
+                    :rules="rules.money"
                     :inline-message="true"
                   >
                     <el-input-number
-                      v-model="row.quantity"
+                      v-model="row.money"
                       :precision="4"
                       :controls="false"
                       :min="0"
@@ -67,6 +67,38 @@
             </el-table>
           </div>
         </template>
+
+        <template #fileSlot>
+          <div>
+            <el-upload
+              v-model:fileList="fileList"
+              :show-file-list="false"
+              class="upload-demo"
+              action="https://winfaster.obs.cn-south-1.myhuaweicloud.com"
+              :data="uploadData"
+              :on-preview="handlePreview"
+              :on-remove="handleRemove"
+              :on-success="handleSuccess"
+              :before-upload="handleBeforeUpload"
+            >
+              <el-button type="primary">选择</el-button>
+            </el-upload>
+            <div>
+              <div style="margin-top: 15px">
+                <el-tag
+                  style="margin-right: 10px"
+                  class="ml-2"
+                  type="info"
+                  v-for="(item, index) in fileListCopy"
+                  :key="index"
+                  closable
+                  @close="handleClose(index)"
+                  >{{ item.fileName }}</el-tag
+                >
+              </div>
+            </div>
+          </div>
+        </template>
       </byForm>
       <template #footer>
         <el-button @click="dialogVisible = false" size="large">取 消</el-button>
@@ -90,7 +122,11 @@ import byTable from "@/components/byTable/index";
 import byForm from "@/components/byForm/index";
 import { computed, defineComponent, ref } from "vue";
 import useUserStore from "@/store/modules/user";
-
+import { getToken } from "@/utils/auth";
+const headers = ref({ Authorization: "Bearer " + getToken() });
+const uploadData = ref({});
+let fileList = ref([]);
+let fileListCopy = ref([]);
 const loading = ref(false);
 const submitLoading = ref(false);
 const sourceList = ref({
@@ -107,13 +143,7 @@ let dialogVisible = ref(false);
 let roomDialogVisible = ref(false);
 let modalType = ref("add");
 let rules = ref({
-  type: [
-    { required: true, message: "请选择仓库类型", trigger: ["blur", "change"] },
-  ],
-  warehouseId: [
-    { required: true, message: "请选择仓库名称", trigger: "change" },
-  ],
-  quantity: [{ required: true, message: "请输入入库数量", trigger: "blur" }],
+  money: [{ required: true, message: "请输入关联金额", trigger: "blur" }],
 });
 const { proxy } = getCurrentInstance();
 const selectConfig = reactive([
@@ -356,6 +386,11 @@ const formConfig = reactive([
     slotName: "detail",
     label: "",
   },
+  {
+    type: "slot",
+    slotName: "fileSlot",
+    label: "上传附件",
+  },
 ]);
 const getList = async (req) => {
   sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
@@ -384,7 +419,6 @@ const openModal = () => {
 const submitForm = () => {
   byform.value.handleSubmit((valid) => {
     const list = formData.data.claimContractList;
-
     if (!(list.length > 0)) {
       return ElMessage({
         message: `请添加认领信息!`,
@@ -393,15 +427,15 @@ const submitForm = () => {
     }
     for (let i = 0; i < list.length; i++) {
       const e = list[i];
-      if (!(e.quantity > 0)) {
+      if (!(e.money > 0)) {
         return ElMessage({
           message: "关联金额不能为0!",
           type: "info",
         });
       }
     }
-    const total = list.reduce((total, x) => (total += Number(x.quantity)), 0);
-    if (formData.data.amount !== total) {
+    const total = list.reduce((total, x) => (total += Number(x.money)), 0);
+    if (Number(formData.data.amount) !== total) {
       return ElMessage({
         message: "认领金额总合和交易金额需一致!",
         type: "info",
@@ -434,7 +468,13 @@ const getDtl = (row) => {
     accountManagementId: row.accountManagementId,
     accountManagementName: row.accountManagementName,
     claimTime: proxy.parseTime(new Date()),
-    claimContractList: [],
+    claimContractList: [
+      {
+        contractId: "1647884197353783298",
+        contractCode: "SC2304-001",
+        money: 0,
+      },
+    ],
   };
   dialogVisible.value = true;
 };
@@ -457,6 +497,38 @@ const getDict = () => {
       }));
     });
 };
+
+const handleBeforeUpload = async (file) => {
+  const res = await proxy.post("/fileInfo/getSing", { fileName: file.name });
+  uploadData.value = res.uploadBody;
+  fileListCopy.value.push({
+    id: res.id,
+    fileName: res.fileName,
+    path: res.fileUrl,
+    url: res.fileUrl,
+    uid: file.uid,
+  });
+};
+
+const handleClose = (index) => {
+  if (fileListCopy.value.length === 1) {
+    return ElMessage({
+      message: "最后一个附件啦!",
+      type: "info",
+    });
+  }
+  fileList.value.splice(index, 1);
+  fileListCopy.value.splice(index, 1);
+};
+
+const handleRemove = (index) => {
+  formData.data.claimContractList.splice(index, 1);
+  return ElMessage({
+    message: "删除成功",
+    type: "success",
+  });
+};
+
 getList();
 getDict();
 onMounted(() => {});