Browse Source

竞争对手详情页新增优势劣势tab

qymljy 6 months ago
parent
commit
53d197b26b

+ 0 - 10
src/Form/competitor/edit.vue

@@ -25,16 +25,6 @@
             <el-col :span="4">
               <businessInquiry ref="businessRef" @businessData="businessSelect" :keyword="form.enterprisename"></businessInquiry>
             </el-col>
-            <el-col :span="24">
-              <el-form-item :label="$t(`优势信息`)+':'" >
-                <el-input type="textarea" rows="5" v-model="form.advantage" :placeholder="$t(`请输入优势信息`)"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="24">
-              <el-form-item :label="$t(`劣势信息`)+':'" >
-                <el-input type="textarea" rows="5" v-model="form.inferiority" :placeholder="$t(`请输入劣势信息`)"></el-input>
-              </el-form-item>
-            </el-col>
             <el-col :span="24">
               <el-form-item :label="$t(`备注`)+':'" >
                 <el-input type="textarea" rows="5" v-model="form.remarks" :placeholder="$t(`请输入备注信息`)"></el-input>

+ 9 - 5
src/HDrpManagement/competitor/detail/index.vue

@@ -11,7 +11,7 @@
         typeTask="竞争对手"
         :tags="[]"
         column="4"
-        :tabs="['详细信息','参与竞争项目','联系人','地址管理']"
+        :tabs="['详细信息','优势劣势','参与竞争项目','联系人','地址管理']"
         @pageChange="pageChange"
         @onEditSuccess="queryMainData($route.query.id)">
       <div slot="tags">
@@ -26,16 +26,19 @@
       <div slot="slot0" >
         <detailed ref="detailed" v-if="mainData" :basic="mainData"></detailed>
       </div>
-      <div slot="slot1" class=" normal-panel">
+      <div slot="slot1">
+        <advantAndDisadvant @delSuccess="queryMainData" @success="queryMainData"></advantAndDisadvant>
+      </div>
+      <div slot="slot2" class=" normal-panel">
         <compete_projects :data="mainData" v-if="flag"></compete_projects>
       </div>
 <!--      <div slot="slot2" class="container normal-panel">
         <product_Information :data="this.$route.query.id"></product_Information>
       </div>-->
-      <div slot="slot2" class=" normal-panel">
+      <div slot="slot3" class=" normal-panel">
         <contacts :data="mainData" v-if="flag"></contacts>
       </div>
-      <div slot="slot3" class=" normal-panel">
+      <div slot="slot4" class=" normal-panel">
         <address_manage :data="mainData" v-if="flag"></address_manage>
       </div>
     </basicDetails>
@@ -50,6 +53,7 @@ import compete_projects from './modules/competeProjects/list'
 import contacts from './modules/contacts/list'
 import address_manage from './modules/addressManage/list'
 import duplicatesCompetitor from "@/components/duplicatesData/duplicatesCompetitor";
+import advantAndDisadvant from "./modules/advantAndDisadvant"
 export default {
   name: "index",
   data(){
@@ -60,7 +64,7 @@ export default {
       flag:false,
     }
   },
-  components:{toVoid,detailed,compete_projects,contacts,address_manage,duplicatesCompetitor},
+  components:{toVoid,detailed,compete_projects,contacts,address_manage,duplicatesCompetitor,advantAndDisadvant},
   methods:{
     async queryMainData(id){
       const res = await this.$api.requested({

+ 73 - 0
src/HDrpManagement/competitor/detail/modules/advantAndDisadvant/add.vue

@@ -0,0 +1,73 @@
+<template>
+  <div>
+    <el-button size="small" type="primary" @click="dialogFormVisible = true">{{$t(`新建`)}}</el-button>
+    <el-drawer
+        :title="$t(`新建优势劣势`)"
+        :visible.sync="dialogFormVisible"
+        size="600px"
+        direction="rtl"
+        :show-close="false"
+        append-to-body
+        @close="onCancel">
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form :model="form"   ref="form"  size="mini" label-position="right" :label-width="tool.onlyZh('75px')">
+            <el-col :span="24">
+              <el-form-item :label="$t(`优势信息`)+':'" >
+                <el-input type="textarea" rows="5" v-model="form.advantage" :placeholder="$t(`请输入优势信息`)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item :label="$t(`劣势信息`)+':'" >
+                <el-input type="textarea" rows="5" v-model="form.inferiority" :placeholder="$t(`请输入劣势信息`)"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="onCancel" class="normal-btn-width inline-16">{{$t('取 消')}}</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">{{$t('确 定')}}</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "add",
+  data(){
+    return {
+      dialogFormVisible:false,
+      form:{
+        "sa_competitorid": this.$route.query.id,
+        "sa_competitor_advid": 0,
+        "inferiority": "",
+        "advantage": "",
+        "isdefault": 1
+      }
+    }
+  },
+  methods:{
+    async onSubmit(){
+      const res = await this.$api.requested({
+        "content": this.form,
+        "id": 2025031809205102,
+      })
+      this.tool.showMessage(res,()=>{
+        this.onCancel()
+      })
+    },
+    onCancel(){
+      this.dialogFormVisible = false
+      this.form.inferiority = ''
+      this.form.advantage = ''
+      this.$emit('addSuccess')
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 77 - 0
src/HDrpManagement/competitor/detail/modules/advantAndDisadvant/edit.vue

@@ -0,0 +1,77 @@
+<template>
+  <div>
+    <el-button size="mini" type="text" @click="onShow(dialogFormVisible = true)">{{$t(`编辑`)}}</el-button>
+    <el-drawer
+        :title="$t(`编辑优势劣势`)"
+        :visible.sync="dialogFormVisible"
+        size="600px"
+        direction="rtl"
+        :show-close="false"
+        append-to-body
+        @close="onCancel">
+      <div class="drawer__panel">
+        <el-row :gutter="20">
+          <el-form :model="form"   ref="form"  size="mini" label-position="right" :label-width="tool.onlyZh('75px')">
+            <el-col :span="24">
+              <el-form-item :label="$t(`优势信息`)+':'" >
+                <el-input type="textarea" rows="5" v-model="form.advantage" :placeholder="$t(`请输入优势信息`)"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item :label="$t(`劣势信息`)+':'" >
+                <el-input type="textarea" rows="5" v-model="form.inferiority" :placeholder="$t(`请输入劣势信息`)"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form>
+        </el-row>
+      </div>
+      <div class="fixed__btn__panel">
+        <el-button size="small" @click="onCancel" class="normal-btn-width inline-16">{{$t('取 消')}}</el-button>
+        <el-button size="small" type="primary" @click="onSubmit" class="normal-btn-width">{{$t('确 定')}}</el-button>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "edit",
+  props:['data'],
+  data(){
+    return {
+      dialogFormVisible:false,
+      form:{
+        "sa_competitorid": this.$route.query.id,
+        "sa_competitor_advid": 0,
+        "inferiority": "",
+        "advantage": "",
+        "isdefault": 1
+      }
+    }
+  },
+  methods:{
+    onShow(){
+      this.form = Object.assign({}, this.form, this.data)
+    },
+    async onSubmit(){
+      const res = await this.$api.requested({
+        "content": this.form,
+        "id": 2025031809205102,
+      })
+      this.tool.showMessage(res,()=>{
+        this.onCancel()
+      })
+    },
+    onCancel(){
+      this.dialogFormVisible = false
+      this.form.inferiority = ''
+      this.form.advantage = ''
+      this.$emit('editSuccess')
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 131 - 0
src/HDrpManagement/competitor/detail/modules/advantAndDisadvant/index.vue

@@ -0,0 +1,131 @@
+<template>
+  <div>
+    <el-input style="width:200px;" :placeholder="$t('搜索')" :suffix-icon="param.content.where.condition?param.content.where.condition.length > 0?'':'':'el-icon-search'" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="clearSearchValue" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
+    </el-input>
+    <add class="inline-16" @addSuccess="addSuccess"></add>
+    <tableDetail style="margin-top: 10px" :layout="tablecols" :data="list" :opwidth="200" :custom="true">
+      <template v-slot:customcol="scope">
+        <div v-if="scope.column.columnname === 'isdefault'" :style="{color:scope.column.data[scope.column.columnname]?tool.getStatusColor('是',true):tool.getStatusColor('否',true)}">
+          {{scope.column.data[scope.column.columnname]?'是':'否'}}
+        </div>
+        <div v-else>{{scope.column.data[scope.column.columnname]||scope.column.columnname ==='operation'?scope.column.data[scope.column.columnname] : '--'}}</div>
+      </template>
+      <template v-slot:opreation="scope">
+        <el-button size="mini" type="text" @click="setDefault(scope.data)" :disabled="scope.data.isdefault" class="inline-16">{{$t(`设为默认`)}}</el-button>
+        <edit :data="scope.data" @editSuccess="listData" class="inline-16"></edit>
+        <el-button size="mini" type="text" class="inline-16" @click="onDel(scope.data)">{{$t(`删除`)}}</el-button>
+      </template>
+    </tableDetail>
+    <div  class="container normal-panel" style="text-align:right">
+      <el-pagination
+          background
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page="currentPage"
+          :page-sizes="[20, 50, 100, 200]"
+          :page-size="100"
+          layout="total,sizes, prev, pager, next, jumper"
+          :total="total">
+      </el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+import add from './add'
+import edit from './edit'
+export default {
+  name: "index",
+  components:{add,edit},
+  data(){
+    return {
+      param:{
+        "content": {
+          "sa_competitorid": this.$route.query.id,
+          "pageNumber": 1,
+          "pageSize": 20,
+          "where": {
+            "condition": ""
+          }
+        },
+        "id": 2025031809222102,
+      },
+      tablecols:[],
+      list:[],
+      currentPage:0,
+      total:0
+    }
+  },
+  methods:{
+    async listData(){
+      const res = await this.$api.requested(this.param)
+      this.list = res.data
+      this.total = res.total
+      this.currentPage = res.pageNumber
+    },
+    async setDefault(data){
+      const res = await this.$api.requested({
+        "content": {
+          "sa_competitor_advid": data.sa_competitor_advid
+        },
+        "id": 2025031809224302,
+      })
+      this.tool.showMessage(res,()=>{
+        this.listData()
+        this.$emit('delSuccess')
+      })
+    },
+    onDel(data){
+      this.$confirm('确定删除此优势劣势信息吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(async () => {
+        const res = await this.$api.requested({
+          "content": {
+            "sa_competitor_advid": data.sa_competitor_advid
+          },
+          "id": 2025031809214002,
+        })
+        this.tool.showMessage(res,()=>{
+          this.listData()
+          this.$emit('delSuccess')
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消删除'
+        });
+      });
+    },
+    addSuccess(){
+      this.listData()
+      this.$emit('success')
+    },
+    clearSearchValue () {
+      this.$store.dispatch('clearSearchValue')
+      this.listData(this.param.content.pageNumber = 1)
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
+  },
+  mounted() {
+    this.listData()
+  },
+  created() {
+    this.tablecols = this.tool.tabelCol(this.$route.name).advantAndDisadvantTable.tablecols
+  }
+}
+</script>
+
+<style scoped>
+
+</style>