yusheng 1 rok pred
rodič
commit
0a0d4f7d57

+ 83 - 6
src/views/contractManage/contractBook/components/addDialog.vue

@@ -148,7 +148,6 @@
             label="需求类型"
             prop="requireSourceType"
             v-if="form.type == 2"
-
             style="margin-bottom: 22px"
           >
             <DictSelection
@@ -160,6 +159,24 @@
             >
             </DictSelection>
           </el-form-item>
+
+          <el-form-item
+            label="需求部门"
+            prop="requireDeptId"
+            v-if="form.type == 2"
+          >
+            <ele-tree-select
+              clearable
+              :data="groupTreeData"
+              v-model="form.requireDeptId"
+              valueKey="id"
+              labelKey="name"
+              placeholder="请选择"
+              @change="change_principalDep"
+              default-expand-all
+            />
+          </el-form-item>
+
           <el-form-item label="合同名称" prop="contractName">
             <el-input
               clearable
@@ -232,6 +249,19 @@
             >
             </el-date-picker>
           </el-form-item>
+
+          <el-form-item
+            label="需求人"
+            prop="requireUserId"
+            v-if="form.type == 2"
+          >
+            <personSelect
+              ref="directorRef"
+              v-model="form.requireUserId"
+              @selfChange="salesmanChange"
+              :init="false"
+            />
+          </el-form-item>
           <el-form-item label="结束日期" prop="contractEndDate">
             <el-date-picker
               v-model="form.contractEndDate"
@@ -619,6 +649,8 @@
   } from '@/api/saleManage/returnGoods';
   import generateContractsDialog1 from './generateContractsDialog1.vue';
   import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
+  import personSelect from '@/components/CommomSelect/person-select.vue';
+  import { listOrganizations } from '@/api/system/organization';
 
   export default {
     props: {
@@ -653,7 +685,8 @@
       quotationList,
       fileMain,
       modalTitle,
-      inventoryTable1
+      inventoryTable1,
+      personSelect
     },
     data() {
       let formDef = {
@@ -691,10 +724,14 @@
         settlementMode: '4',
         pricingWay: 1,
         customerMark: '',
-        requireSourceType:'',
-        requireSourceTypeName:'',
+        requireSourceType: '',
+        requireSourceTypeName: '',
         totalPrice: null,
         isFirstProcess: 0,
+        requireDeptId: '',
+        requireUserId: '',
+        requireUserName: '',
+        requireDeptName: '',
         type: '', //1=销售合同  2=采购合同
         typeName: '',
         fileId: [] //附件集合
@@ -848,10 +885,14 @@
         enterprisePage: [],
         create: false,
         source: '',
-        businessId: ''
+        businessId: '',
+        groupTreeData: [],
+        // 组织机构平铺数据
+        groupData: []
       };
     },
     created() {
+      this.getGroupAll();
       enterprisePage({
         pageNum: 1,
         size: 200
@@ -869,6 +910,34 @@
           this.$refs.paymentListTable.setDiscountAmount(val);
         });
       },
+      // 获取公司数据
+      getGroupAll() {
+        listOrganizations().then((list) => {
+          this.groupData = list;
+          this.groupTreeData = this.$util.toTreeData({
+            data: list,
+            idField: 'id',
+            parentIdField: 'parentId'
+          });
+        });
+      },
+
+      // 选择负责人部门
+      change_principalDep(id) {
+        const info = this.groupData.find((e) => e.id == id);
+        this.form.requireDeptName = info.name;
+        this.form.requireUserId = '';
+        this.form.requireUserName = '';
+        // 根据部门获取人员
+        this.$nextTick(() => {});
+        this.getrequireUser(id);
+      },
+
+      getrequireUser(groupId) {
+        if (groupId) {
+          this.$refs.directorRef.getList({ groupId });
+        }
+      },
       //开始日期验证
       validateStartDate(rule, value, callback) {
         if (this.form.contractEndDate && value > this.form.contractEndDate) {
@@ -937,8 +1006,10 @@
         this.loading = false;
         if (data) {
           this.form.HJQD = this.form.partbName;
+
           this.$nextTick(() => {
             this.dictChange(contractVO.type, 'init');
+            this.getrequireUser(contractVO.requireDeptId)
 
             // if (this.form.fileId) {
             //   this.form.fileId = JSON.parse(this.form.fileId);
@@ -1332,6 +1403,7 @@
           contractVO.type == '2' ? contractVO.partbId : contractVO.partaId
         );
         this.$nextTick(() => {
+          this.getrequireUser(contractVO.requireDeptId)
           let firstLink =
             this.linkNameOptions.find((item) => item.ifChief == 1) || {};
           let LinkId = [1, 4, 5].includes(this.form.sourceType)
@@ -1630,6 +1702,11 @@
         this.$set(this.form, 'sourceName', data.planName);
         this.$set(this.form, 'contractName', data.planName);
         this.$set(this.form, 'sourceId', data.id);
+        this.$set(this.form, 'requireDeptId', data.requireDeptId);
+        this.$set(this.form, 'requireUserId', data.requireUserId);
+        this.$set(this.form, 'requireDeptName', data.requireDeptName);
+        this.$set(this.form, 'requireUserName', data.requireUserName);
+      //  this.getrequireUser(data.requireDeptId)
         this.form.isFirstProcess = info.isFirstProcess;
         this.$nextTick(() => {
           this.$refs.rawDetailListRef &&
@@ -1644,7 +1721,7 @@
           contractVO: {
             ...this.form,
             requireSourceType: info.sourceType,
-            requireSourceTypeName:  info.sourceTypeName
+            requireSourceTypeName: info.sourceTypeName
           },
           productList: info.detailList || []
         };

+ 9 - 1
src/views/contractManage/contractBook/components/detailDialog.vue

@@ -75,7 +75,9 @@
             <el-form-item label="需求类型:" v-if="form.type==2" prop="requireSourceTypeName">
               <el-input v-model="form.requireSourceTypeName" disabled></el-input>
             </el-form-item>
-            
+            <el-form-item label="需求部门:" v-if="form.type==2" prop="requireDeptName">
+              <el-input v-model="form.requireDeptName" disabled></el-input>
+            </el-form-item>
             <el-form-item label="编码:" prop="contractNo">
               <el-input v-model="form.contractNo" disabled></el-input>
             </el-form-item>
@@ -87,6 +89,8 @@
             <el-form-item label="签订日期:" prop="contractStartDate">
               <el-input v-model="form.contractStartDate" disabled></el-input>
             </el-form-item>
+          
+        
             <el-form-item label="结束日期:" prop="contractEndDate">
               <el-input v-model="form.contractEndDate" disabled></el-input>
             </el-form-item>
@@ -99,6 +103,9 @@
             <el-form-item label="结算方式:" prop="payWay">
               <el-input v-model="form.settlementModeName" disabled></el-input>
             </el-form-item>
+            <el-form-item label="需求人:" prop="requireUserId"  v-if="form.type == 2">
+              <el-input v-model="form.requireUserName" disabled></el-input>
+            </el-form-item>
             <el-form-item prop="contractFile" label="合同附件:">
               <fileMain v-model="form.fileId" type="view"></fileMain>
             </el-form-item>
@@ -229,6 +236,7 @@
         ref="table"
         :needPage="false"
         :columns="receiptPaymentListcolumns"
+        :toolkit="[]"
         :datasource="detailData.receiptPaymentList"
         row-key="id"
       >

+ 9 - 0
src/views/contractManage/contractBook/components/detailDialog1.vue

@@ -72,6 +72,12 @@
             <el-form-item label="合同名称:" prop="contractName">
               <el-input v-model="form.contractName" disabled></el-input>
             </el-form-item>
+            <el-form-item label="需求类型:" v-if="form.type==2" prop="requireSourceTypeName">
+              <el-input v-model="form.requireSourceTypeName" disabled></el-input>
+            </el-form-item>
+            <el-form-item label="需求部门:" v-if="form.type==2" prop="requireDeptName">
+              <el-input v-model="form.requireDeptName" disabled></el-input>
+            </el-form-item>
             <el-form-item label="编码:" prop="contractNo">
               <el-input v-model="form.contractNo" disabled></el-input>
             </el-form-item>
@@ -95,6 +101,9 @@
             <el-form-item label="结算方式:" prop="payWay">
               <el-input v-model="form.settlementModeName" disabled></el-input>
             </el-form-item>
+            <el-form-item label="需求人:" prop="requireUserId"  v-if="form.type == 2">
+              <el-input v-model="form.requireUserName" disabled></el-input>
+            </el-form-item>
             <el-form-item prop="contractFile" label="合同附件:">
               <fileMain v-model="form.fileId" type="view"></fileMain>
             </el-form-item>

+ 27 - 14
src/views/purchasingManage/purchaseOrder/components/addDialog.vue

@@ -737,6 +737,12 @@
         this.$set(this.form, 'relationName', data.requirementName);
         this.$set(this.form, 'relationId', data.id);
         this.$set(this.form, 'relationCode', data.requirementCode);
+        this.$set(this.form, 'requireDeptId', data.requireDeptId);
+        this.$set(this.form, 'requireDeptName', data.requireDeptName);
+        this.$set(this.form, 'requireUserId', data.requireUserId);
+        this.$set(this.form, 'requireUserName', data.requireUserName);
+        this.getrequireUser(data.requireDeptId);
+
         let info = await getProductsBySource({
           relationId: this.form.relationId,
           relationType: this.form.relationType
@@ -772,11 +778,11 @@
         this.form.requireDeptName = data.requireDeptName;
         this.form.requireUserId = data.requireUserId;
         this.form.requireUserName = data.requireUserName;
-        this.getrequireUser(data.requireDeptId);
         this.$set(this.form, 'requireDeptId', data.requireDeptId);
         this.$set(this.form, 'requireDeptName', data.requireDeptName);
         this.$set(this.form, 'requireUserId', data.requireUserId);
         this.$set(this.form, 'requireUserName', data.requireUserName);
+        this.getrequireUser(data.requireDeptId);
         // let cusInfo = {}
         this.$set(this.form, 'purchasePlanName', data.planName);
         this.$set(this.form, 'purchasePlanId', data.id);
@@ -939,16 +945,21 @@
 
         this.loading = false;
         if (data) {
-          if (data.contractVO.sourceType == 3 && data.contractVO.sourceId) {
-            //获取需求部门
-            const res = await getplanDetail(data.contractVO.sourceId);
-            this.$nextTick(() => {
-              this.form.requireDeptId = res.requireDeptId;
-              this.form.requireDeptName = res.requireDeptName;
-              this.form.requireUserId = res.requireUserId;
-              this.form.requireUserName = res.requireUserName;
-            });
-          }
+          // if (data.contractVO.sourceType == 3 && data.contractVO.sourceId) {
+          //   //获取需求部门
+          //   const res = await getplanDetail(data.contractVO.sourceId);
+          //   this.$nextTick(() => {
+          //     this.form.requireDeptId = res.requireDeptId;
+          //     this.form.requireDeptName = res.requireDeptName;
+          //     this.form.requireUserId = res.requireUserId;
+          //     this.form.requireUserName = res.requireUserName;
+          //   });
+          // }
+          this.$set(this.form, 'requireDeptId', data.contractVO?.requireDeptId);
+          this.$set(this.form, 'requireDeptName', data.contractVO?.requireDeptName);
+          this.$set(this.form, 'requireUserId', data.contractVO?.requireUserId);
+          this.$set(this.form, 'requireUserName', data.contractVO?.requireUserName);
+          this.getrequireUser(data.contractVO?.requireDeptId);
           this.$nextTick(() => {
             let { contractVO } = data;
             // this.form=contractVOform.receiveAddress
@@ -976,7 +987,9 @@
               settlementMode,
               settlementModeName,
               pricingWay,
-              isFirstProcess,requireSourceType,requireSourceTypeName
+              isFirstProcess,
+              requireSourceType,
+              requireSourceTypeName
             } = contractVO;
             this.form = Object.assign({}, this.form, {
               partaAddress,
@@ -1006,8 +1019,8 @@
               payAmount: discountTotalPrice,
               receiveAddress: partaAddress,
               isFirstProcess,
-              sourceType:requireSourceType||"1",
-              sourceTypeName:requireSourceTypeName,
+              sourceType: requireSourceType || '1',
+              sourceTypeName: requireSourceTypeName
             });
             this.getLinkInfo(partaId);
 

+ 1 - 1
src/views/purchasingManage/purchasePlanManage/components/outsourcing.vue

@@ -3,7 +3,7 @@
     <el-form-item prop="totalCount" label="委外数量">
       <el-input v-model="form.totalCount" disabled></el-input>
     </el-form-item>
-    <el-form-item prop="totalWeight" label="委外总量">
+    <el-form-item prop="totalWeight" label="委外总量">
       <el-input v-model="form.totalWeight" disabled></el-input>
     </el-form-item>
     <el-form-item prop="categoryName" label="产品名称">

+ 131 - 43
src/views/saleManage/saleOrder/invoice/components/print-template-jsyp.vue

@@ -26,6 +26,37 @@
           >嘉实(湖南)医药科技有限公司产品出库单</div
         >
       </div>
+      <div
+        style="
+          width: 100%;
+          font-size: 12px;
+          display: flex;
+          justify-content: space-between;
+          margin-bottom: 10px;
+          margin-top: 10px;
+        "
+      >
+        <span style="width: 39%">制单日期:{{ formData.createTime }}</span>
+        <span style="width: 39%">发货日期:{{ outBound.createTime }}</span>
+        <span style="width: 22%">出库单号:{{ outBound.bizNo }}</span>
+      </div>
+      <div
+        style="
+          width: 100%;
+          font-size: 12px;
+          display: flex;
+          justify-content: space-between;
+          margin-bottom: 10px;
+        "
+      >
+        <span style="width: 39%"
+          >上市许可持有人:嘉实(湖南)医药科技有限公司</span
+        >
+        <span style="width: 39%"
+          >地址:长沙高新开发区汇智中路179号金导园C区8栋</span
+        >
+        <span style="width: 22%">电话:0731-84221288</span>
+      </div>
       <div
         style="
           width: 100%;
@@ -35,9 +66,11 @@
           margin-bottom: 10px;
         "
       >
-        <span style="width:39%">制单日期:{{ formData.receiveAddress }}</span>
-        <span style="width:39%">发货日期:{{ formData.docNo }}</span>
-        <span style="width:22%">出库单号:{{ formData.docNo }}</span>
+        <span style="width: 39%"
+          >受托生产企业:湖南天济草堂制药股份有限公司</span
+        >
+        <span style="width: 39%">地址:长沙高新开发区环联路7号</span>
+        <span style="width: 22%"></span>
       </div>
       <div
         style="
@@ -48,8 +81,9 @@
           margin-bottom: 10px;
         "
       >
-        <span style="width: 70%">客户地址:{{ formData.receiveAddress }}</span>
-        <span style="width: 30%">NO.:{{ formData.docNo }}</span>
+        <span style="width: 39%">购货单位:{{ formData.contactName }}</span>
+        <span style="width: 39%">收货地址:{{ formData.receiveAddress }}</span>
+        <span style="width: 22%"></span>
       </div>
       <table
         cellspacing="0"
@@ -64,35 +98,48 @@
       >
         <tbody>
           <tr align="center">
-            <td style="padding: 5px"> 编号 </td>
-            <td style="padding: 5px"> 商品名称 </td>
-            <td style="padding: 5px"> 规格/型号 </td>
-            <td style="padding: 5px"> 生产厂家</td>
-            <td style="padding: 5px"> 数量</td>
-            <td style="padding: 5px"> 单位</td>
+            <td style="padding: 5px"> 产品名称 </td>
+            <td style="padding: 5px"> 规格 </td>
+            <td style="padding: 5px"> 包装规格 </td>
+            <td style="padding: 5px"> 剂型</td>
+            <td style="padding: 5px"> 批准文号</td>
             <td style="padding: 5px"> 批号</td>
-            <td style="padding: 5px"> 序列号</td>
+            <td style="padding: 5px"> 单位</td>
+            <td style="padding: 5px"> 数量</td>
+            <td style="padding: 5px"> 单价(元)</td>
+            <td style="padding: 5px"> 金额(元)</td>
+            <td style="padding: 5px"> 有效期</td>
             <td style="padding: 5px"> 备注</td>
           </tr>
 
-          <tr align="center" v-for="(item, index) in formData.productList">
-            <td style="padding: 5px"> {{ index + 1 }} </td>
-            <td style="padding: 5px"> {{ item.productName }} </td>
+          <tr
+            align="center"
+            v-for="(item, index) in outBound.outInDetailRecordRequestList"
+          >
+            <td style="padding: 5px"> {{ item.categoryName }} </td>
             <td style="padding: 5px">
-              {{ item.packingSpecification }}/{{ item.modelType }}
+              {{ item.specification }}
             </td>
-            <td style="padding: 5px"> 嘉实(湖南)医院科技有限公司</td>
-            <td style="padding: 5px"> {{ item.totalCount }}</td>
-            <td style="padding: 5px"> {{ item.measuringUnit }}</td>
+            <td style="padding: 5px"> {{ item.packingSpecification }}</td>
+            <td style="padding: 5px"> {{ item.categoryModel }}</td>
+            <td style="padding: 5px"> {{ item.approvalNumber }}</td>
             <td style="padding: 5px"> {{ item.batchNo }}</td>
-            <td style="padding: 5px"> 序列号</td>
-            <td style="padding: 5px"> {{ item.productCode }}</td>
+            <td style="padding: 5px"> {{ item.measureUnit }}</td>
+            <td style="padding: 5px"> {{ item.measureQuantity }}</td>
+
+            <td style="padding: 5px"> {{ item.singlePrice }}</td>
+            <td style="padding: 5px">{{ item.totalPrice }} </td>
+            <td style="padding: 5px"> {{ item.guaranteePeriodText }}</td>
+            <td style="padding: 5px"> </td>
           </tr>
-          <tr>
-            <td style="padding: 5px" colspan="9">
-              备注: &nbsp;白色仓库联&nbsp;&nbsp;&nbsp;
-              红色客户联&nbsp;&nbsp;&nbsp; 黄色财务联</td
-            >
+
+          <tr align="center">
+            <td style="padding: 5px" colspan="7"> 合计 </td>
+            <td style="padding: 5px"> {{ getTotal('measureQuantity') }}</td>
+            <td style="padding: 5px"> {{ getTotal('singlePrice') }}</td>
+            <td style="padding: 5px"> {{ getTotal('totalPrice') }} </td>
+            <td style="padding: 5px"></td>
+            <td style="padding: 5px"> </td>
           </tr>
         </tbody>
       </table>
@@ -105,17 +152,25 @@
           margin-top: 10px;
         "
       >
-        <div style="flex: 1">
-          <div>编单人/日期:{{ formData.makerName }}</div>
-          <div>{{ formData.createTime }}</div>
-        </div>
-        <div style="flex: 1">
-          <div>审核人/日期:</div>
-          <div>12</div>
-        </div>
-        <div style="flex: 1">
-          收货人:{{ formData.linkName }} {{ formData.linkPhone }}
-        </div>
+        <div style="flex: 1"> 开票员: </div>
+        <div style="flex: 1"> 保管员: </div>
+        <div style="flex: 1"> 复核: </div>
+        <div style="flex: 1"> 发货员: </div>
+      </div>
+      <div
+        style="
+          width: 100%;
+          font-size: 12px;
+          display: flex;
+          justify-content: space-between;
+          margin-top: 10px;
+        "
+      >
+        <div style="flex: 1"> </div>
+        <div style="flex: 1"> 白联:开票留存 </div>
+        <div style="flex: 1"> 红联:仓库留存 </div>
+        <div style="flex: 1"> 蓝联:财务留存 </div>
+        <div style="flex: 1"> 绿联/黄联:随货同行 </div>
       </div>
     </div>
 
@@ -128,7 +183,7 @@
 
 <script>
   import { getSendSaleOrderrecordDetailSplit } from '@/api/saleManage/saleordersendrecord';
-
+  import { getInfoBySourceBizNoAll } from '@/api/wms';
   import { mapGetters } from 'vuex';
   export default {
     name: 'print',
@@ -141,16 +196,49 @@
         checked: '',
         QRvisible: false,
         isPrintPrice: false,
-        formData: {}
+        formData: {},
+        outBound: {}
       };
     },
 
     methods: {
-      open(id) {
-        getSendSaleOrderrecordDetailSplit(id).then((data) => {
-          this.formData = data;
+      async open(id) {
+        this.formData = await getSendSaleOrderrecordDetailSplit(id);
           this.QRvisible = true;
-        });
+          let dataArray = await getInfoBySourceBizNoAll(this.formData.docNo);
+          this.outBound = JSON.parse(JSON.stringify(dataArray[0]));
+          this.outBound['outInDetailRecordRequestList'] = [];
+
+          dataArray.forEach((item) => {
+            item.outInDetailList.forEach((val) => {
+              val.outInDetailRecordRequestList.forEach((j) => {
+                let data=this.formData.productList.find(product=>product.productCode==val.categoryCode)
+                j['categoryName'] = val.categoryName;
+                j['categoryModel'] = val.categoryModel;
+                j['specification'] = val.specification;
+                j['categoryCode'] = val.categoryCode;
+                j['packingSpecification'] = val.extField?.packingSpecification;
+                j['approvalNumber'] = val.extField?.approvalNumber;
+                if(data){
+                  j['singlePrice'] = data.singlePrice;
+                  j['totalPrice'] = j.measureQuantity*data.singlePrice;
+                  j['guaranteePeriodText'] = data.guaranteePeriod?(data.guaranteePeriod+(data.guaranteePeriodUnitName||'')):''
+                }
+              });
+              this.outBound['outInDetailRecordRequestList'].push(
+                ...val.outInDetailRecordRequestList
+              );
+            });
+          });
+      },
+      getTotal(key) {
+        let val=0
+        this.outBound?.outInDetailRecordRequestList.forEach(item=>{
+          if(Number(item[key])){
+            val+=Number(item[key])
+          }
+        })
+        return val;
       },
       close() {
         this.QRvisible = false;